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