我想开始使用Sequelize,一个允许在node.js中为mysql使用ORM的模块。我想知道是否有可能像CakePHP那样自动生成模型。在CakePHP中,它将读取表的信息,并自动在模型中创建关联和字段及其类型。我真的不喜欢用手完全绘制出我所有的表,因为有些表相对较大。有没有什么东西能帮我做到这一点?还是我一个人把所有的模型都打出来?
cx6n0qe31#
你可以通过sequelize-auto自动生成模型。点击以下链接https://github.com/sequelize/sequelize-auto它将生成您的表的模型。
bxgwgixi2#
现在您可以使用sequelize-automate自动生成模型。sequelize-auto似乎很长一段时间没有维护,软件包已经过时了。
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
sshcrbum3#
Sequelizer -一个桌面应用程序,用于自动和可视化地导出Sequelize模型。使用ElectronJS制作的GUI客户端令人印象深刻,点击这里:来源:https://github.com/andyforever/sequelizer
xfb7svmp4#
您可以为每个模型使用同步方法举例说明:
Object.keys(db).forEach((modelName) => { db[modelName].sync().then(result => { // some logic }).catch(err => { // some logic }) });
如果表不存在,则逻辑将创建新表完整脚本index.js
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文件结构看起来像这样:
5m1hhzi45#
使用npm install --save-dev sequelize-configuration使用npm install --save-dev sequelize-autonpx sequelize-auto -o“./database/models”-d -h localhost -u root -p 3306 -x“”-e mysql
ct3nt3jp6#
参见https://github.com/sequelize/sequelize/issues/339Sequelize提供了读取数据库现有表名的方法。此外,还有一种方法可以读取表的结构。结合起来,应该可以自动创建模型。
iaqfqrcu7#
使用此网站从schema和db config https://laravelschema.com/node-js-sequalize生成laravel和node JS模型
7条答案
按热度按时间cx6n0qe31#
你可以通过sequelize-auto自动生成模型。点击以下链接https://github.com/sequelize/sequelize-auto
它将生成您的表的模型。
bxgwgixi2#
现在您可以使用sequelize-automate自动生成模型。
sequelize-auto
似乎很长一段时间没有维护,软件包已经过时了。举例来说:
sshcrbum3#
Sequelizer -一个桌面应用程序,用于自动和可视化地导出Sequelize模型。
使用ElectronJS制作的GUI客户端令人印象深刻,点击这里:来源:https://github.com/andyforever/sequelizer
xfb7svmp4#
您可以为每个模型使用同步方法
举例说明:
如果表不存在,则逻辑将创建新表
完整脚本
index.js
该脚本将获取指定目录中的所有文件(模型),您将在其中放置index.js文件
结构看起来像这样:
5m1hhzi45#
使用npm install --save-dev sequelize-configuration
使用npm install --save-dev sequelize-auto
npx sequelize-auto -o“./database/models”-d -h localhost -u root -p 3306 -x“”-e mysql
ct3nt3jp6#
参见https://github.com/sequelize/sequelize/issues/339
Sequelize提供了读取数据库现有表名的方法。此外,还有一种方法可以读取表的结构。结合起来,应该可以自动创建模型。
iaqfqrcu7#
使用此网站从schema和db config https://laravelschema.com/node-js-sequalize生成laravel和node JS模型