我在定义模型时遇到了 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: object is not a function when defining models in NodeJs using Sequelize 的建议,将其添加到 models/tasks.js 文件的顶部,但出现了同样的错误。
var DataTypes = require('sequelize/lib/data-types');
最佳答案
sequelize变化很大,所以stackoverflow的答案可能不正确。
如果你查看 sequelize 文档 ( link )
他们开始改用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')
在每个模型文件中require('sequelize')
在index
文件中并将其传递给每个模型文件
关于node.js - Sequelize DataTypes 类型错误 : Cannot read property 'INTEGER' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38778482/