在定义模型时,我有一个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');
答案 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
})
因此,您有两种方法可以实现
require('sequelize')
require('sequelize')
在index
文件中,并将其传递给每个模型文件
醇>