koa2 中使用 sequelize-auto 自动生成 models

  最近 koa2 项目中用到的 ORM 是 Sequelize V6,建好表后可以使用sequelize-auto自动生成每个表对应的 Model。

  GitHub:sequelize-auto

一、安装依赖

  项目中使用的 Mysql 5.7,安装sequelize-automysql依赖:

1
2
npm i mysql -S
npm i sequelize-auto -D

  在package.json中的script添加命令:

1
2
3
4
"scripts": {
"dev": "export NODE_ENV=development && nodemon app.js",
"models": "export NODE_ENV=development && node utils/mysql/sequelize-auto/auto.js"
}

二、配置参数

db.config.js

1
2
3
4
5
6
7
8
module.exports = {
host : '127.0.0.1',
user : 'root',
password : '123456',
database : 'jizhangla',
port: 3306,
dialect: 'mysql'
}

auto.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// utils/mysql/sequelize-auto/auto.js
const SequelizeAuto = require('sequelize-auto')
const { host, user, password, database, dialect, port } = require('../../../db.config')

const options = {
host,
dialect,
directory: 'models', // 指定输出 models 文件的目录
port,
additional: {
timestamps: false
}
}
const auto = new SequelizeAuto(database, user, password, options)

auto.run(err => {
if (err) throw err
})

  执行npm run models,将自动在models文件夹下生成每个表对应的 Model,并生成init-models.js

db.js

  在utils/mysql下新增db.js文件,内容如下:

1
2
3
4
5
6
const Sequelize = require('sequelize')
const initModels = require('../../models/init-models')
const { host, user, password, database, dialect } = require('../../db.config')
const sequelize = new Sequelize(database, user, password, { host, dialect, define: { timestamps: false } })

module.exports = initModels(sequelize)

三、使用

1
2
const db = require('../utils/mysql/db')
const userInfo = await db.User.findOne({ where: isDelete: 0 })
以上

随笔标题:koa2 中使用 sequelize-auto 自动生成 models

随笔作者:刘先玉

发布时间:2020年12月18日 - 11:43:31

最后更新:2020年12月18日 - 11:43:31

原文链接:https://liuxianyu.cn/article/sequelize-auto.html