Sequelize 偏执地从多个表中删除

Sequelize paranoid delete from multiple tables

我目前在我的数据库中有 post table、会话 table 和用户 table。关于 post 的对话只能在 2 个用户之间进行。

我的问题是当我删除一个 post 时,我还需要删除关于这个 post 的所有对话。

使用下面的代码,我可以从 post 的 table 中删除 post,但在对话 table 中它只是删除了 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();
}
});
});