我正在使用sequelize版本:5.21.2,并且出现以下错误:“推文未与用户关联!”
Error: { SequelizeEagerLoadingError: Tweet is not associated to User!
at Function._getIncludedAssociation (D:\References\Youtube\Sequelize\sequelize-1-hour\node_modules\sequelize\lib\model.js:715:13)
at Function._validateIncludedElement (D:\References\Youtube\Sequelize\sequelize-1-hour\node_modules\sequelize\lib\model.js:619:53)
at options.include.options.include.map.include (D:\References\Youtube\Sequelize\sequelize-1-hour\node_modules\sequelize\lib\model.js:516:37)
at Array.map (<anonymous>)
我有两个模型
Tweet.js
const Sequelize = require('sequelize');
//sequelize comes from global.sequelize in connection.js
const Tweet = sequelize.define('Tweet', {
id: {
type: Sequelize.INTEGER(11),
allowNull: true,
autoIncrement: true,
primaryKey: true
},
userId: Sequelize.INTEGER(11),
content: Sequelize.STRING(300)
});
Tweet.associate = function(models) {
Tweet.belongsTo(models.User, { foreignKey: 'userId' });
};
module.exports = Tweet;
和User.Js
const Sequelize = require('sequelize');
//sequelize comes from global.sequelize in connection.js
const User = sequelize.define('User', {
id: {
type: Sequelize.INTEGER(11),
primaryKey: true
},
username: {
type: Sequelize.STRING(35),
},
passwd: {
type: Sequelize.STRING(20),
allowNull: false
}
});
User.associate = function(models) {
User.hasMany(models.Tweet);
};
module.exports = User;
抛出错误的代码是
const users = await User.findAll({
where: { id: '1' },
include: [Tweet]
}).catch(errHandler);
我不知道如何在获取用户时包含推文。
最佳答案
您已经在模型中定义了创建关联的函数。但是,您永远不会调用这些函数。实例化 Sequelize
对象并初始化模型后,您应该运行以下代码来创建关联:
for(let modelName in sequelize.models) {
sequelize.models[modelName].associate(sequelize.models);
}
参见:
关于node.js - SequelizeEagerLoadingError 'Model 1' 与 'Model 2' 没有关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59106377/