如何在使用sequelize-cli

时间:2017-12-30 04:08:32

标签: node.js sequelize.js sequelize-cli

我使用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是在函数签名中定义的。
  2. sequelize model:generate时,在config.json中定制read config,其中指定了dbname,passowrd。

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

4 个答案:

答案 0 :(得分: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对象和一个DataTypes object,因此您只需要传递sequelizeSequelize.DataTypes的实例,然后它将返回您的模型,例如:

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

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

最后,您可以使用Stu.findAll()获取数据库行。

希望这可以为您提供帮助。

答案 1 :(得分:0)

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

尝试以下代码:

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

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

stu.findAll.then(...)

答案 2 :(得分:0)

通过CLI生成模型时,它将创建一个方便的Sequelize文件,该文件为您处理var { stu } = require("./models"); stu.findAll().then(...); 实例的传递。您可以像这样通过ES6分解简单地要求挑选樱桃,现有模型:

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

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

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

public DataTable GetAll()
    {
        SqlCommand Command = new SqlCommand("Domain_GetAll", m_Connection);
        Command.CommandType = CommandType.StoredProcedure;

        SqlDataAdapter DAdpt = new SqlDataAdapter(Command);

        DataSet ds = new DataSet();
        DAdpt.Fill(ds,"Domain");**error at this location**
        return ds.Tables["Domain"];
    }

答案 3 :(得分:-3)

所有这些都可以通过这种魔法来解决:http://docs.sequelizejs.com/manual/tutorial/models-definition.html#import