我想开始使用Sequelize,这是一个允许在node.js中使用ORM for mysql的模块。我想知道是否可以自动生成像CakePHP那样的模型。在CakePHP中,它将读取表的信息,并自动在模型中创建其类型的关联和字段。我真的很讨厌手工完全绘制所有表格,因为有些表格相对较大。那里有什么能为我做这件事吗?或者我自己手动输入所有模型?
答案 0 :(得分:8)
您可以通过sequelize-auto自动生成模型。只需按照以下链接即可 https://github.com/sequelize/sequelize-auto
它会生成你桌子的模型。
答案 1 :(得分:2)
Sequelizer - 用于自动和直观地导出续集模型的桌面应用程序。
使用ElectronJS制作的令人印象深刻的GUI客户端,抓住这里: 资料来源:https://github.com/andyforever/sequelizer
答案 2 :(得分:1)
请参阅https://github.com/sequelize/sequelize/issues/339
Sequelize提供了读取数据库现有表名的方法。此外,还有一种读取表结构的方法。结合起来,应该可以自动创建模型。
答案 3 :(得分:1)
现在,您可以使用sequelize-automate自动生成模型。 sequelize-auto
似乎很长一段时间都无法维护,并且该软件包已过期。
$ npm install sequelize-automate
$ ./node_modules/.bin/sequelize-automate --help
例如:
$ ./node_modules/.bin/sequelize-automate -t js -h localhost -d test -u root -p root -o models
答案 4 :(得分:1)
使用 npm install --save-dev sequelize-cli
使用 npm install --save-dev sequelize-auto
npx sequelize-auto -o "./database/models" -d -h localhost -u root -p 3306 -x '' -e mysql
答案 5 :(得分:0)
您可以为每个模型使用sync方法
示例:
Object.keys(db).forEach((modelName) => {
db[modelName].sync().then(result => {
// some logic
}).catch(err => {
// some logic
})
});
如果表不存在,逻辑将创建一个新表
完整脚本index.js
'use strict';
const fs = require("fs");
const path = require("path");
const Sequelize = require("sequelize");
const sequelize = new Sequelize(process.env.DB_DATEBASE, process.env.DB_USER, process.env.DB_PASS, {
host: process.env.DB_HOST,
port: process.env.DB_PORT,
dialect: 'mysql',
operatorsAliases: false
});
const db = {};
fs
.readdirSync(__dirname)
.filter((file) => {
return (file.indexOf(".") !== 0) && (file !== "index.js") && (file !== "migrations") && (file !== "redshift-migrations");
})
.forEach((file) => {
const model = sequelize.import(path.join(__dirname, file));
db[model.name] = model;
});
Object.keys(db).forEach((modelName) => {
if ("associate" in db[modelName]) {
db[modelName].associate(db);
}
db[modelName].sync().then(result => {
// some logic
}).catch(err => {
// some logic
})
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
脚本将给定目录中的所有文件(模型)放入您要放置index.js文件的位置
结构如下: