node.js后端之sequelize

Posted lyc1226

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js后端之sequelize相关的知识,希望对你有一定的参考价值。

node.js后端之sequelize

简单来说,node.js是运行在后端的javascript,后端肯定需要访问数据库,而今天我们要介绍的对象就是可以让你不用再痛苦的写sql语句,提高效率的ORM框架——sequelize。

准备工作

安装

首先新建一个文件夹sequelize_demo,打开终端(默认已经有node环境),输入npm init,这会初始化此文件夹并生成一个.json文件,一路回车默认即可。

接下来安装express框架:

$ npm install express --save

然后安装sequelize框架和mysql驱动:

$ npm install --save sequelize
$ npm install --save mysql2

ok,安装完成

创建文件

解析来创建我们需要用到的文件,文件目录如下~

技术图片

连接数据库

接下来开始数据库的连接,打开db.js

//db.js
var Sequelize = require('sequelize');

//四个参数分别是 数据库名称,用户名,密码,配置

module.exports = new Sequelize('farmer', 'root', '123456', { //换成自己的数据库
    host: 'localhost', // 数据库地址
    dialect: 'mysql', // 指定连接的数据库类型
    pool: {
        max: 5, // 连接池中最大连接数量
        min: 0, // 连接池中最小连接数量
        idle: 10000 // 如果一个线程 10 秒钟内没有被使用过的话,那么就释放线程
    }
});

模型文件user.js,这个模型用来和数据库里的表对应,一个模型就代表一个表格,我们编写好模型,可以让sequelize为我们自动创建数据库表,非常方便。使用define函数来创建模型

// user.js
 var Sequelize = require('sequelize');
var sequelize = require('./db');
 
// 创建 model
    const User = sequelize.define('user', {
        userName: {
            type: Sequelize.STRING, // 指定值的类型
            field: 'user_name' // 指定存储在表中的键名称
        },
        // 没有指定 field,表中键名称则与对象键名相同,为 email
        email: {
            type: Sequelize.STRING
        }
    }, {
        // 如果为 true 则表的名称和 model 相同,即 user
        // 为 false MySQL创建的表名称会是复数 users
        // 如果指定的表名称本就是复数形式则不变
        freezeTableName: false
    });
//如果不存在就创建此表
 var user = User.sync({ force: false });

// 添加新用户
exports.addUser = function(userName, email) {
    // 向 user 表中插入数据
    return User.create({
        userName: userName,
        email: email
    });
};

然后进入终端,启动服务 node app.js,打开数据库会发现已经有表格创建好了。最后的createdAt和updatedAt是sequelize自动添加的,当然不想要可以这样:

  // 不要添加时间戳属性 (updatedAt, createdAt)
  timestamps: false,

技术图片

接下来编写测试函数testUser.js,这里我们就可以愉快的使用sequelize封装好的函数来操作啦,和sql语句说拜拜!

常用的函数如 find,findAll,create,详细可看官方文档https://sequelize.org/v5/manual/models-usage.html

//testUser.js
var user = require('./user'); //引入模型
 
// 添加用户
user.addUser('jack', 'jack@163.com').then(function() {
    // 查询新添加的用户
    return user.findOne({ where: { user_name: userName }}) 
    
}).then(function(user) {
    console.log('****************************');
    console.log('user name: ', user.userName);
    console.log('user email: ', user.email);
});

进入终端,运行testUser

node testUser.js

技术图片

打开数据库就会发现数据已经插入到数据库中了~

以上是关于node.js后端之sequelize的主要内容,如果未能解决你的问题,请参考以下文章

Node JS 和 Sequelize:显示当前用户的所有对话

同步执行 Sequelize 查询

启动新的 Sequelize 后端并且无法连接到 SQLite DB

Node.js学习13~基于node-sequelize的查询器,附代码举例

Node.js,ORM框架,Sequelize,入门及增、删、改、查代码案例

无法通过 Node.js 中的 Sequelize 从 DB 中选择数据