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

Kay*_*lly 12 node.js sequelize.js

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

我的问题是,是否会为每个模型创建一个与数据库的新连接,还是会继续重复使用相同的连接?我应该放弃"每个文件一个模型"的整个概念,只创建一个主Models.js文件吗?

我是Node的新手,我仍然习惯于它的惯例.谢谢您的帮助!

Dan*_*ohn 14

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

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 }
    })
};
Run Code Online (Sandbox Code Playgroud)

然后在初始化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;
Run Code Online (Sandbox Code Playgroud)

您可以在http://nodejs.org/api/modules.htm上阅读有关模块的更多信息,但上面的示例应该可以帮助您入门.

  • 我刚刚找到了一个非常类似于你发布的解决方案.唯一的区别是我使用了`sequelize.import('./ File')`函数.无论哪种方式都有效!谢谢你的另一种选择. (2认同)
  • dankohn,我尝试了上面的代码,我必须像下面一样传递sequelize和Sequelize的参考,请确认我是否错过了导致无法使用确切代码的东西,因为您已经共享了 `var Brand = require("./dto/brand" )(续集,续集);` (2认同)