gpt4 book ai didi

postgresql - Sequelize 从多个表中删除偏执

转载 作者:行者123 更新时间:2023-12-03 22:32:50 27 4
gpt4 key购买 nike

我目前在我的数据库中有一个帖子表、对话表和一个用户表。关于帖子的对话只能在 2 个用户之间进行。
我的问题是当我删除一个帖子时,我也需要删除关于这个帖子的所有对话。
使用下面的代码,我可以从我的帖子表中删除帖子,但在对话表中,它只是从相应对话的 postId 列中删除 postId,而不是整行。

router.delete("/:id", (req, res) => {
console.log(req.params);

let { id } = req.params;
Post.findByPk(id).then((post) => {
if (post) {
return post.setConversations([]).then(() => {
return post.destroy();
});
} else {
return Promise.reject();
}
})
.then(()=>{
res.status(204).send();
},()=>{
res.status(404).send();
})
});
我也尝试过使用 CASCADE 但不幸的是它没有用。
Post.hasMany(Conversation, { 
foreignKey: "PostId",
// onDelete: 'CASCADE'
});

Conversation.belongsTo(Post,{
foreignKey: "PostId",
allowNull: false,
// onDelete: 'CASCADE'
})

最佳答案

我设法让它工作,但有人可以告诉我我在做什么是正确的。

router.delete("/:id", (req, res) => {
console.log(req.params);

let { id } = req.params;
Post.findByPk(id).then((post) => {
if (post) {
Promise.all([
post.destroy(),
Conversation.destroy({where:{PostId:req.params.id}})
]).then(() => {
res.status(204).send();
}),
} else {
res.status(404).send();
}
});
});

关于postgresql - Sequelize 从多个表中删除偏执,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65234954/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com