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

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

  1. 全栈项目|小书架|服务器开发-NodeJS 中使用 Sequelize 操作 MySQL数据库

    安装 官网:https://sequelize.org/v5/manual/getting-started.html 安装sequelize及数据库连接驱动 npm install --save se ...

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

    本文介绍了Python操作MYSQL.执行SQL语句.获取结果集.遍历结果集.取得某个字段.获取表字段名.将图片插入数据库.执行事务等各种代码实例和详细介绍,代码居多,是一桌丰盛唯美的代码大餐   实 ...

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

    实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...

  4. nodejs+sequelize操作mysql数据库

    前言: 本人对mysql不是很熟悉,只会命令行的简单增删改查.有些观点可能不到位请谅解. sequelize是针对node.js和io.js开发的基于ORM的框架,它支持的数据库包括:PostgreS ...

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

    Sequelize官方文档  https://sequelize.readthedocs.io/en/latest/ 本文转自:https://www.jianshu.com/p/797e10fe23 ...

  6. node.js使用Sequelize 操作mysql

    Sequelize就是Node上的ORM框架 ,相当于java端的Hibernate 是一个基于 promise 的 Node.js ORM, 目前支持 Postgres, MySQL, SQLite ...

  7. C#连接操作mysql实例

    第三方组件:Mysql.Data.dll说明:去官方网站下载Mysql.Data.dll,然后在项目中添加该组件的引用,在代码页里输入using Mysql.Data.MysqlClient,我们就可 ...

  8. python操作mysql实例

    #coding=utf-8 import MySQLdb # 打开数据库连接 db = MySQLdb.connect(host='localhost',user='root',passwd='',d ...

  9. nodejs利用express操作mysql增删改查

    如果不知道怎么连接数据库的请看http://www.cnblogs.com/complete94/p/6714757.html 我当大家都知道怎么连接数据库了,那么 我们开始吧 var express ...

随机推荐

  1. PL/SQL控制语句(二、循环控制语句)

    循环允许重复执行代码直到循环条件匹配,PL/SQL中循环主要有LOOP语句和EXIT语句两种,这两种语句相辅相成,一起组成了PL/SQL的循环结构.在PL/SQL中,循环分为四大类,本文将会讲解其中的 ...

  2. 201621123023《Java程序设计》第8周学习总结

    一.本周学习总结 二.书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 由图可知,传入参数后调用indexOf函数来判断是否存在,会循环整个eleme ...

  3. P5277 【模板】多项式开根(加强版)(bsgs or Cipolla)

    题面 传送门 题解 首先你得会多项式开根->这里 其次你得会解形如 \[x^2\equiv a \pmod{p}\] 的方程 这里有两种方法,一个是\(bsgs\)(这里),还有一种是\(Cip ...

  4. API接口文档范例

  5. PHP一句话木马Webshell变形免杀总结

    0×00 前言 大部分Webshell查杀工具都是基于关键字特征的,通常他们会维护一个关键字列表,以此遍历指定扩展名的文件来进行扫描,所以可能最先想到的是各种字符串变形,下面总结了一些小的方法,各种不 ...

  6. 这是一次 docker 入门实践

    前言 其实接触 docker 也有一段时间了,但是一直没有做下总结,现在网上关于 docker 的介绍也有很多了,本着好记性不如烂笔头的原则,还是自己再记录一波吧. 实现目标 安装 docker ce ...

  7. java的应用,SVN客户端的安装教程

    1.先注册一个百度云账号,然后打开https://console.bce.baidu.com 这个网站,按照下面的图形点击 !!!!请注意这是要收钱的,但能学习到那用微信打开你的网站也是值得的. 2. ...

  8. L04-VirtualBox中CentOS7网络配置(可连外网)

    本文所述的方法在RHEL6.5.RHEL7和CentOS6.5中同样适用. 1.工具:VirtualBox,虚拟机:CentOS7 2.VirtualBox工具中的网络配置 (1)VirtualBox ...

  9. (C/C++) string / *char / int 基本轉換

    網路上有許 string / *char / integer 基本轉換方式 string 與 *char 互相轉換的方法 /* string to *char */ string ssbuf1 = & ...

  10. jQuery 获取元素当前位置offset()与position()

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...