nodejs使用sequelize操作mysql实例

sequelize是node操作mysql的一款npm包,包含很多特性:数据库模型映射、事务处理、模型属性校验、关联映射等,花了两天时间学习了下基本的一些操作,特别是关联映射部分的操作,包含1:1、1:N、N:N部分,利用express框架实现简单的rest服务。

关于项目结构:

其中,routes存放各种路由,models配置各种数据库模型类,ref.js用来配置相关的数据模型关联关系,主要关系为:user和loginInfo是1:1、user和address是1:N、user和role是N:N关系,index.js主要是加载路由:

module.exports = function(app) {
    app.use("/api/users", require("./user.js"));
    app.use("/api/addresses", require("./address.js"));
    app.use("/api/loginInfos", require("./loginInfo.js"));
    app.use("/api/roles", require("./role.js"));
};

ref.js映射关系配置类:

/**
 * 模型关联类
 */
var { sequelize } = require("../config/db");
var User = sequelize.import("./user");
var LoginInfo = sequelize.import("./loginInfo");
var Address = sequelize.import("./address");
var Role = sequelize.import("./role");

//建立模型之间关联关系
User.hasOne(LoginInfo);
LoginInfo.belongsTo(User);

User.hasMany(Address, {
    foreignKey: ‘user_id‘,
    targetKey: ‘id‘,
    as: "Addresses" //别名,目标模型会混入到源模型后会使用该名称,存在getAddresses、setAddresses等方法
});
Address.belongsTo(User); //address想反查user必须加这个,否则只能实现user查询address

User.belongsToMany(Role, {
    through: "userRoles"
});
Role.belongsToMany(User, {
    through: ‘userRoles‘
});

//创建表
sequelize.sync({ force: false });

数据库配置类:

const Sequelize = require(‘sequelize‘);
const sequelize = new Sequelize(‘node-sequelize‘, ‘admin‘, ‘admin‘, {
    host: ‘localhost‘,
    dialect: ‘mysql‘,
    pool: {
        max: 5,
        min: 0,
        idle: 10000
    }
});

//测试数据库链接
sequelize.authenticate().then(function() {
    console.log("数据库连接成功");
}).catch(function(err) {
    //数据库连接失败时打印输出
    console.error(err);
    throw err;
});

exports.sequelize = sequelize;
exports.Sequelize = Sequelize;

当然,app.js要做的就是加载路由、加载映射关系配置文件,使数据模型和数据库同步:

//加载主外键关系及创建数据库
require(‘./models/ref‘);

Router(app);

详细代码已上传至github:https://github.com/caiya/node-sequelize

时间: 2024-11-05 14:42:47

nodejs使用sequelize操作mysql实例的相关文章

Python操作Mysql实例代码教程在线版(查询手册)_python

实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding: UTF-8 -*- #安装MYSQL DB for pythonimport MySQLdb as mdb con = None try:    #连接mysql的方法:connect('ip','user','password','dbname')    con = mdb.connect('

python操作Mysql实例

本文介绍了Python操作mysql,执行SQL语句,获取结果集,遍历结果集,取得某个字段,获取表字段名,将图片插入数据库,执行事务等各种代码实例和详细介绍. 实例1.获取MYSQL的版本 #!/usr/bin/env python   import MySQLdb as mdb   try:       con=mdb.connect('localhost','root','123','test') #连接mysql的方法      cur=con.cursor() #所有的查询,都在连接co

nodejs+sequelize操作mysql数据库

前言: 本人对mysql不是很熟悉,只会命令行的简单增删改查.有些观点可能不到位请谅解. sequelize是针对node.js和io.js开发的基于ORM的框架,它支持的数据库包括:PostgreSQL. MySQL.MariaDB. SQLite 和 MSSQL. 目录: 1.安装mysql 2.创建目录及文件 3.连接数据库并定义模型 4.操作数据库(增删改查) 5.sequelize框架的API泛解 1.安装mysql 安装环境:win7 x64 先去官网下载最新的版本的mysql,进入

[转]Node.JS使用Sequelize操作MySQL

Sequelize官方文档  https://sequelize.readthedocs.io/en/latest/ 本文转自:https://www.jianshu.com/p/797e10fe2393 Node.JS提供了操作数据库的基础接口,我们可以通过mysql模块的query方法进行操作,但是需要编写SQL语句,对于SQL语句并不精通的人来说有一定的难度,而且在代码中保留SQL语句也有一定的危险性.为了方便进行数据库操作,ORM框架应运而生,Sequelize正是这样的模块. 安装Se

Python操作Mysql实例代码

实例1.取得MYSQL的版本在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 代码如下: # -*- coding: UTF-8 -*- #安装MYSQL DB for pythonimport MySQLdb as mdb con = None try:    #连接mysql的方法:connect('ip','user','password','dbname')    con = mdb.connect('localh

nodejs利用express操作mysql增删改查

如果不知道怎么连接数据库的请看http://www.cnblogs.com/complete94/p/6714757.html 我当大家都知道怎么连接数据库了,那么 我们开始吧 var express = require("express"); var mysql = require("mysql"); var baseDate = require("./mysql");  //数据库连接的信息 var $sql = mysql.createCo

[转]C#连接操作mysql实例

本文转自:http://hi.baidu.com/zhqngweng/item/c4d2520cb7216877bfe97edf 第三方组件:Mysql.Data.dll说明:去官方网站下载Mysql.Data.dll,然后在项目中添加该组件的引用,在代码页里输入using Mysql.Data.MysqlClient,我们就可以顺利的使用该类库的函数建立连接了. 以下是几个常用函数: #region  建立MySql数据库连接    /// <summary>    /// 建立数据库连接.

Python MySQLdb模块连接操作mysql数据库实例_python

mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法.python操作数据库需要安装一个第三方的模块,在http://mysql-python.sourceforge.net/有下载和文档. 由于python的数据库模块有专门的数据库模块的规范,所以,其实不管使用哪种数据库的方法都大同小异的,这里就给出一段示范的代码: #-*- encoding: gb2312 -*- import os, sys, string impo

实例讲解如何使用C++操作MySQL数据库类

用C++操作MySQL数据库类: 注释:这几个类对处理不是很大数据量的操作是很理想的, 但不适宜特大型的数据的查询,因为源码中将查询到的数据直接放入了内存. /* *  project: *           通用模块 ( 用 c++ 处理  mysql 数据库类,像ADO ) *                  *  description: * *           通过DataBase,RecordSet,Record,Field类,实现对mysql数据库的操作 *    包括连接.