Nodejs with Sequelizejs using separate files per model

前端 未结 2 1988
情书的邮戳
情书的邮戳 2021-02-05 16:48

This is an embarrassingly beginner question, but I just want to settle my worries about Sequelizejs. I want to split out each model into its own file to keep my source organize

相关标签:
2条回答
  • 2021-02-05 16:59

    In case if one wants to use EcmaScript 6 approach there is great example with explanation in Sequelize documentation here.

    // in your server file - e.g. 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
      })
    }
    

    The import method can also accept a callback as an argument.

    sequelize.import('project', (sequelize, DataTypes) => {
      return sequelize.define("project", {
        name: DataTypes.STRING,
        description: DataTypes.TEXT
      })
    })
    
    0 讨论(0)
  • 2021-02-05 17:05

    Every model is defined as its own module, which you export:

    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 }
        })
    };
    

    Then simply import the module when you initialize Sequelize (and you can import many models here):

    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;
    

    You can read up more on modules at http://nodejs.org/api/modules.htm but the example above should get you started.

    0 讨论(0)
提交回复
热议问题