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

1,953 阅读1分钟

本篇文章于 2020-12-18 初次写在我的个人小站,链接:liuxianyu.cn/article/seq…

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

  GitHub:sequelize-auto

一、安装依赖

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

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

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

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

二、配置参数

db.config.js

module.exports = {
  host : '127.0.0.1',
  user : 'root',
  password : '123456',
  database : 'jizhangla',
  port: 3306,
  dialect: 'mysql'
}

auto.js

// 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 文件,内容如下:

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)

三、使用

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