Я пытаюсь разрешить пользователю понравиться сообщение, я получаю эту ошибку
Необработанный отказ 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
})
})
})