首页 文章

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

提问于
浏览
2

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

错误详情:

> /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 回答

  • 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
    })
    

    因此,您有两种方法可以实现这一目标

    每个模型文件中都有

    • require('sequelize')
      index 文件中的
    • require('sequelize') 并将其传递给每个模型文件

相关问题