我正在使用node.js版本10.13.0和SEQUELIZE版本4.42.0,并且尝试定义一组模型,但是date.js文件存在问题,它说:
无法读取未定义的属性“ define” 当我使用connect.js文件运行测试时,就会发生这种情况。 这是项目的结构:
所以我在date.js中执行以下操作
function init(){
console.log(sequelize);
const Date = sequelize.define('date' , {
id : {
type : sequelize.DataTypes.BIGINT(5),
allowNull : false,
autoIncrement : true,
primaryKey : true
},
starting_date : {
type : sequelize.DataTypes.DATE,
allowNull : true,
defaultValue : null
},
ending_date : {
type : sequelize.DataTypes.DATE,
allowNull : true,
defaultValue: null
},
now : {
type : sequelize.DataTypes.BOOLEAN,
allowNull : true,
defaultValue : true
}
});
Date.associate = function(models){
Date.belongsToMany(models.email , {through : models.task});
Date.belongsToMany(models.user , {through : models.task});
};
return Date;
}
module.exports = init();
这是connect.js脚本:
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = 'development';
const config = require('../config/config')[env];
const sequelize = new Sequelize(config.database.database_name,
config.database.username, config.database.password,
config.database.database_config);
var db = {
sequelize : sequelize,
Sequelize : Sequelize
};
fs.readdirSync("./models/").filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) &&
(file.slice(-3) === '.js');
}).forEach(file => {
var model = sequelize.import(path.join("./models", file));
db[model.name] = model;
});
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.authenticate().then(() => {
console.log('database worked !!!');
}).catch(error => {
console.log(error.stack);
});
module.exports = db;
整个项目都在此链接中:https://github.com/ekkatharisi/mailer
作为最终结果,我想按照scheme中的描述构建此数据库:
先谢谢您
答案 0 :(得分:0)
仔细阅读您的错误消息。它指出您无法从“未定义”中读取“定义”。
您唯一读到“定义”的地方是在{。{1}}的date.js开头。
因此,您正在从未定义的含义中读取“定义”,即“序列化”未定义。这可能是正确的,因为您没有在那里导入任何库。而且,如果要导入某些内容,则导入是错误的。否则,“ sequelize”将不会是“ undefined”,从而不会显示错误消息。