续集数据类型类型错误:无法读取未定义的属性'INTEGER'



我在定义模型时遇到了Sequelize DataTypes.INTEGER问题。我正在学习电子书《用Node.js构建API》中的一个例子。我是一个初学者,试图掌握Express和Sequelize。

错误详细信息:

> /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的建议:当使用Sequelize在NodeJ中定义模型时,对象不是一个函数,将其添加到models/tasks.js文件的顶部,但出现了相同的错误。

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

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

如果你查看了序列化文档(链接(

他们开始使用Sequelize.XXXX而不是

这是文档中的例子

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'),并将其传递给每个模型文件

相关内容

最新更新