4

我使用 sequelize-cli 为模型 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
};

我的问题是

  1. 如何获得模型命名stu?正如sequelize函数签名中定义的那样。

sequelize model:generate,sequelize 读取 config.json 中的配置,其中指定了 dbname,passowrd。

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

3 回答 3

2

问题 1 的答案: “sequelize.import”将完成这项工作。

试试这个代码:

const Sequelize = require('sequelize')
const sequelize = new Sequelize(...)

const stu = sequelize.import('./models/stu')

stu.findAll.then(...)
于 2019-08-22T07:45:51.310 回答
0

当您通过 CLI 生成模型时,它会创建一个方便的models/index.js文件来处理传递Sequelize给您的实例。您可以通过 ES6 解构来简单地要求精选的现有模型,如下所示:

var { stu } = require("./models");

stu.findAll().then(...);

或者,您可以一次全部要求它们,然后根据需要访问特定模型:

var models = require("./models");

models.stu.findAll().then(...);
于 2019-11-14T07:58:31.940 回答
0

我让它工作的方式是用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对象和 a DataTypes object,所以你只需要传递 and 的实例,sequelize然后Sequelize.DataTypes它就会返回你的模型,例如:

const Sequelize = require('sequelize');
const sequelize = new Sequelize(...);

const Stu = require('./models/stu')(sequelize, Sequelize.DataTypes);

最后,您可以使用Stu.findAll().

希望这可以帮到你。

于 2019-07-29T23:38:34.687 回答