我正在尝试让用户喜欢一个帖子,我收到此错误
未处理的拒绝SequelizeDatabaseError:“ UserId”列不 存在
我知道UserId 确实存在,因为他们是这样的数据库中的用户。
我不确定是否正确设置了迁移和模型。我避免使用关联会导致它们非常复杂地掌握一段时间。我想要的只是将一个赞与一个帖子相关联,并且能够检索喜欢的计数。是主要目标。
模型/喜欢
'use strict';
module.exports = function(sequelize, DataTypes) {
const Like = sequelize.define('Likes', {
like:{
type:DataTypes.BOOLEAN,
allowNull:true
}
}, {});
Like.associate = function(models) {
Like.belongsTo(models.User, {
onDelete: "CASCADE",
foreignKey: {
foreignKey: 'userId'
}
})
Like.belongsTo(models.Post, {
onDelete: "CASCADE",
foreignKey: {
foreignKey: 'likeId'
}
})
}
return Like;
}
;
模型/帖子
module.exports = (sequelize, DataTypes) => {
const Post = sequelize.define('Post', {
title: DataTypes.STRING,
post_content: DataTypes.STRING,
username: DataTypes.STRING
}, {});
Post.associate = function(models) {
Post.belongsTo(models.User, { foreignKey: 'userId', targetKey: 'id' });
Post.hasMany(models.Likes, { foreignKey: 'likeId', targetKey: 'id' });
};
return Post;
};
模型/用户
'use strict';
const User = (sequelize, DataTypes) => {
const myUser = sequelize.define('User', {
username: DataTypes.STRING,
email: DataTypes.STRING,
password: DataTypes.STRING,
resetPasswordToken:DataTypes.STRING,
resetPasswordExpires: DataTypes.DATE
}, {});
myUser.associate = function(models) {
myUser.hasMany(models.Post, { foreignKey: 'userId', as:'users' });
myUser.hasMany(models.Likes, { foreignKey: 'userId', as:'likes' });
};
return myUser;
};
module.exports = User;
路线/帖子
router.post('/like/:id', (req, res)=> {
models.Post.findOne({
where:{
id: req.params.id
}
}).then( (like) => {
if(like){
models.Likes.findOrCreate({
where:{
postId: req.params.id
},
defaults:{
like:true
}
}).then( (result) => {
res.status(200).send({
message: 'You have like this post',
like: result
})
})
}
}).catch( (err) => {
res.status(401).send({
message: "Something went wrong",
err: err
})
})
})