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

标签 postgresql sequelize.js

我目前在我的数据库中有一个帖子表、对话表和一个用户表。关于帖子的对话只能在 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/

相关文章:

postgresql - 您可以使用 fork 在应用程序之间迁移 heroku 数据库吗?

python - 数据库列中的换行符和空格

postgresql - 返回列集的函数

oracle - PostgreSQL 相当于 Oracle 的 PERCENTILE_CONT 函数

node.js - Sequelize 验证总是返回 false

node.js - 协会使用了错误的列

ruby-on-rails-3 - 在 rails3 中使用 IN 运算符查找位置

javascript - 在 Promise 中编辑 .then()

javascript - 如何检查当前用户是否喜欢帖子

sql-server - 使用 Sequelize 将对象传递到钩子(Hook)中