Node.js 使用sequelize cli后如何从sequelize.model获取模型

Node.js 使用sequelize cli后如何从sequelize.model获取模型,node.js,sequelize.js,sequelize-cli,Node.js,Sequelize.js,Sequelize Cli,我使用sequelize cli为model Student自动生成代码: module.exports = (sequelize, DataTypes) => { var _stu = sequelize.define('stu', { name: DataTypes.STRING, password: DataTypes.STRING, gender: DataTypes.INTEGER, }, { classMethods: { a

我使用sequelize cli为model Student自动生成代码:

module.exports = (sequelize, DataTypes) => {
  var _stu = sequelize.define('stu', {
    name: DataTypes.STRING,
    password: DataTypes.STRING,
    gender: DataTypes.INTEGER,
  }, {
    classMethods: {
      associate: function(models) {
        // associations can be defined here
      }
    }
  });
  return _stu
};
我的问题是

  • 如何获取名为stu的模型?由于函数签名中定义了
    续集
  • sequelize model:generate
    时,sequelize读取config.json中的配置,其中指定了dbname、passowrd

  • 函数签名中的
    sequelize
    如何知道数据库连接配置,比如名称、密码等,我在这个js文件中没有指定

  • 我使用的方法是使用
    require()
    函数导入模型,然后使用所需参数调用它

    解释 通过require函数,您将获得另一个返回模型的函数

    module.exports = (sequelize, DataTypes) => {
      const stu = sequelize.define('stu', {
        // ...database fields
      }, {});
      stu.associate = function(models) {
        // associations can be defined here
      };
      return sty;
    } // note that module.exports is a function
    
    现在,此函数需要初始化的
    sequelize
    对象和
    DataTypes对象
    ,因此您只需传递
    sequelize
    sequelize.DataTypes
    的实例,然后它将返回您的模型,例如:

    const Sequelize = require('sequelize');
    const sequelize = new Sequelize(...);
    
    const Stu = require('./models/stu')(sequelize, Sequelize.DataTypes);
    
    最后,您可以使用
    Stu.findAll()
    获取数据库行

    希望这能对您有所帮助。

    回答问题1: “sequelize.import”将完成此工作

    请尝试以下代码:

    const Sequelize = require('sequelize')
    const sequelize = new Sequelize(...)
    
    const stu = sequelize.import('./models/stu')
    
    stu.findAll.then(...)
    

    当您通过CLI生成模型时,它会创建一个方便的
    models/index.js
    文件,用于为您传递
    Sequelize
    实例。您只需通过ES6分解如下所示的方式来获取精心挑选的现有模型:

    var { stu } = require("./models");
    
    stu.findAll().then(...);
    
    或者,您可以同时要求所有这些模型,然后根据需要访问特定的模型:

    var models = require("./models");
    
    models.stu.findAll().then(...);
    

    那么,您以后如何处理关联(关联)?