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

时间:2016-08-04 22:39:05

标签: node.js express sequelize.js

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

错误详情:

> /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: object is not a function when defining models in NodeJs using Sequelize中的建议,将其添加到models / tasks.js文件的顶部但是同样的错误。

  

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

1 个答案:

答案 0 :(得分:3)

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

如果您查看了sequelize doc(link

他们开始使用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. {li> require('sequelize')index文件中,并将其传递给每个模型文件