У меня возникают проблемы при удалении лайка, когда пользователь дважды нажимает кнопку лайка.У пользователя есть возможность понравиться сообщению, мне понадобится такая же функциональность при повторном нажатии на него.Я предполагаю, что onDelete
сделает это возможным.
У меня настроено onDelete для моей модели.
module.exports = function(sequelize, DataTypes) {
const Like = sequelize.define('Likes', {
like:{
type:DataTypes.BOOLEAN,
allowNull:true
},
}, {});
Like.associate = function(models) {
// foreign key will attach a userId to the likes table
Like.belongsTo(models.User, {
onDelete: 'CASCADE',
foreignKey: 'userId',
targetKey: 'id'
})
Like.belongsTo(models.Post, {
onDelete: 'CASCADE',
foreignKey: 'postId',
targetKey: 'id'
})
}
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' });
// foreign key id will attach a postId to the likes table.
Post.hasMany(models.Likes, { foreignKey: 'postId', targetKey: 'id', onDelete: 'CASCADE' });
};
return Post;
};
routs / posts.js
router.post('/like', (req, res)=> {
models.Likes.create({
postId: req.body.postId,
userId: req.user.id,
like:true
}).then( () => {
res.status(200).send({
message: 'You have like this post',
});
}).catch( (err) => {
res.status(401).send({
message: "Something went wrong",
err: err
})
})
})