【问题标题】:Sequelize how to return destroyed row续集如何返回被破坏的行
【发布时间】:2017-05-02 10:17:50
【问题描述】:

这是我在数据库中删除行的代码

Model.destroy({
  where: {
    ...
  }
}).then((response) => {
    console.log(response)
})

我在console.log 中得到的是01,无论是否删除记录..

有没有办法在承诺中返回被破坏的行?

所以响应应该是这样的 { id:123, ... }

【问题讨论】:

  • 添加了一些更新。

标签: node.js row sequelize.js destroy


【解决方案1】:

UpdateDestroy 不能这样工作。所以你不能,但有办法。

Model.find({
   where: {...}
}).then((result) => {
    return Model.destroy({where: ..})
              .then((u) => {return result});
});

在这里,我们返回一个作为Model.destroy 的承诺,它将解析为从对Model.find 的调用中收到的result 对象。

所以,假设有一个名为deleteRow 的函数定义为:

function deleteRow() {
    return Model.find({
        where: { ...}
    }).then((result) => {
        return Model.destroy({ where: ..})
            .then((u) => { return result });
    });
}

您可以将deleteRow 用作:

deleteRow().then(findResult => console.log(JSON.stringify(findResult));

【讨论】:

  • 谢谢 Suhail .. 还没有实现,但我相信它会没事的......所以你确定没有 2 次查询就无法检索已删除的记录吗?
  • 也许您可以使用备份文件。我不知道有任何可用的恢复工具。但这很好。
  • 实际上update 与 Postgres 一起工作。见returnign: true选项
  • 这个答案是不正确的,因为并发。 find() 和 destroy() 操作期间的记录数并不总是相同。
猜你喜欢
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2020-11-24
相关资源
最近更新 更多