上篇说到我虽然使用了sequelize,但是感觉我一个后台没写完,人就累死了。
所以我就找了下有没有可以自动生成模型文件的,听说他们JAVA就有的。
然后就找到了这个 sequelize-auto。
1,安装
npm install -g sequelize-auto mysql
2,生成model文件
sequelize-auto -o "./mysqltest" -d ips -h localhost -u root -p 3306 -x 123456 -t t_user -e mysql -c "./mysql-age.json" -C
如果数据库密码是空的,就删除-x 123456
3,示例
[node] sequelize-auto -h <host> -d <database> -u <user> -x [password] -p [port] --dialect [dialect] -c [/path/to/config] -o [/path/to/models] -t [tableName] -C
4,配置
Options:
-h, --host [required] * 数据库地址
-d, --database [required] * 数据库名称
-u, --user # 数据库用户名
-x, --pass # 数据库密码
-p, --port # 数据库端口号
-c, --config # Sequelize的构造函数“options”标记对象的JSON文件路径
-o, --output # 输出文件路径
-e, --dialect # 数据库类型:postgres, mysql, sqlite
-a, --additional # 包含在model的配置参数中define的模型定义的JSON文件路径
-t, --tables # 要导出的表名,多个表名逗号分隔,空值就导出所有表模型
-T, --skip-tables # 要跳过的表名,多个表名逗号分隔
-C, --camel # 使用驼峰命名模型和字段
-n, --no-write # 是否写入文件
-s, --schema # 从中检索表的数据库架构(翻译不动,也没明白作用,原文:Database schema from which to retrieve tables)
-z, --typescript # 将模型输出为typescript文件
5,因为我觉得每次输命令太麻烦了,就自己对命令进行了一点点封装了一个JS文件,用NODE去执行文件。
5.1,添加文件sequelize.model.js
'use strict';
// sequelize.model.js
const child_process = require('child_process');
const { exec } = child_process;
const modelName = process.argv[2];
const database = {
// [required] * 数据库地址
host: 'localhost',
// [required] * 数据库名称
database: 'ips',
// 数据库用户名
user: 'root',
// 数据库密码
pass: '',
// 数据库端口号
port: 3306,
// Sequelize的构造函数“options”标记对象的JSON文件路径
config: '',
// 输出文件路径
output: './dbModel',
// 数据库类型:postgres, mysql, sqlite
dialect: 'mysql',
// 包含在model的配置参数中define的模型定义的JSON文件路径
additional: '',
// 表名,多个表名逗号分隔
tables: modelName || '',
// 要跳过的表名,多个表名逗号分隔
'skip-tables': '',
// 使用驼峰命名模型和字段
camel: true,
// 是否写入文件
'no-write': false,
// 从中检索表的数据库架构
schema: false,
// 将模型输出为typescript文件
typescript: false,
};
let connectShell = 'sequelize-auto';
for (const i in database) {
const value = database[i];
if (value) {
if (value === true) {
connectShell += ` --${i}`;
} else {
connectShell += ` --${i} ${value}`;
}
}
}
exec(connectShell, (err, stdout, stderr) => {
console.log(`stderr: ${stderr}`);
console.log(`stdout: ${stdout}`);
if (err) {
console.log(`exec error: ${err}`);
}
});
5.2,然后在package.json中scripts中添加脚本"model": "node sequelize.model.js"
// package.json
{
"scripts": {
"model": "node sequelize.model.js"
}
}
5.3,在需要生产model文件时,运行脚本
# 把所有表model文件
npm run model
# 把单个对应表名model文件
npm run model user
结尾: 有兴趣可以去看下我的项目