带有Sequelizejs的Nodejs使用每个模型的单独文件

这是一个尴尬的初学者问题,但我只想解决我对Sequelizejs的担忧。 我想把每个模型分成自己的文件,以保持我的源代码。 为了做到这一点,我需要在每个文件的开始处require("sequelize')var sequelize = new Sequelize('DB-Name', 'DB-User', 'DB-Password');

我的问题是,将创build一个新的连接到每个模型的数据库,还是只是不断重复使用相同的连接? 我是否应该放弃“每个文件一个模型”的概念,并创build一个主要的Models.js文件?

我对Node非常陌生,现在仍然习惯于它的约定。 谢谢您的帮助!

每个模型都被定义为自己的模块,您可以导出:

 module.exports = function(sequelize, DataTypes){ return sequelize.define('Brand', { name: { type: DataTypes.STRING, unique: true, allowNull: false }, description: { type: DataTypes.TEXT, allowNull: false }, status: { type: DataTypes.INTEGER, unique: false, allowNull: true } }) }; 

然后在初始化Sequelize时简单地导入模块(您可以在这里导入多个模型):

 var Sequelize = require("sequelize"); var config = require("../../config/config.js"); var sequelize = new Sequelize(config.database, config.username, config.password, { dialect: config.dialect, host: config.host, port: config.port, omitNull: true, logging: false }); var Brand = require("./Brand").Brand; 

你可以在http://nodejs.org/api/modules.htm上阅读更多的模块,但是上面的例子会让你开始。

如果您想使用EcmaScript 6方法,请在这里的 Sequelize文档中进行说明。

 // in your server file - eg app.js const Project = sequelize.import(__dirname + "/path/to/models/project") // The model definition is done in /path/to/models/project.js // As you might notice, the DataTypes are the very same as explained above module.exports = (sequelize, DataTypes) => { return sequelize.define("project", { name: DataTypes.STRING, description: DataTypes.TEXT }) } 

导入方法也可以接受callback作为参数。

 sequelize.import('project', (sequelize, DataTypes) => { return sequelize.define("project", { name: DataTypes.STRING, description: DataTypes.TEXT }) })