sequelize DataTypes TypeError:无法读取未定义的属性“INTEGER”

定义模型时,我有一个续集DataTypes.INTEGER问题。 我在电子书中标题为“使用Node.js构buildAPI”的示例。 我是一个试图抓住快递和续集的新手。 任何帮助非常感谢。 谢谢。

错误详情:

> /home/xxx/workspace/ntask-api/models/tasks.js:9 > type: DataTypes.INTEGER, > ^ TypeError: Cannot read property 'INTEGER' of undefined > at Function.module.exports (/home/xxx/workspace/ntask-api/models/tasks.js:9:21) > at Consign.into (/home/xxx/workspace/ntask-api/node_modules/consign/lib/consign.js:239:17) > at Object.<anonymous> (/home/xxx/workspace/ntask-api/index.js:13:5) > at Module._compile (module.js:456:26) > at Object.Module._extensions..js (module.js:474:10) > at Module.load (module.js:356:32) > at Function.Module._load (module.js:312:12) > at Function.Module.runMain (module.js:497:10) > at startup (node.js:119:16) > at node.js:902:3 

代码示例如下

/models/tasks.js

 > module.exports = function(sequelize, DataTypes){ > //console.log(DataTypes.INTEGER); > const Tasks = sequelize.define("Tasks", { id: { > type: DataTypes.INTEGER, > primaryKey: true, > autoIncrement: true }, title: { > type: DataTypes.STRING, > allowNull: false, > validate: { notEmpty: true > } }, done: { > type: DataTypes.BOOLEAN, > allowNull: false, > defaultValue: false } > }, > { classMethods:{ > associate: function(models){ Tasks.belongsTo(models.Users, { > onDelete: "CASCADE", > foreignKey: { allowNull: false > } }); > } } > }); > return Tasks; }; 

我也尝试了TypeError的build议:在使用Sequelize在NodeJs中定义模型时,object不是一个函数,通过将其添加到models / tasks.js文件的顶部而是使用相同的错误。

var DataTypes = require('sequelize / lib / data-types');

sequelize更改很多,所以stackoverflow的答案可能不正确。

如果您查看sequelize文档( 链接 )

他们开始使用Sequelize.XXXX

这里是doc的例子

 var Project = sequelize.define('project', { title: Sequelize.STRING, description: Sequelize.TEXT }) var Task = sequelize.define('task', { title: Sequelize.STRING, description: Sequelize.TEXT, deadline: Sequelize.DATE }) 

因此,你有两种方法来实现这一点

  1. 在每个模型文件中都require('sequelize')
  2. index文件中require('sequelize')并将其传递给每个模型文件