Javascript 如何撤消Sequelize.js中的软删除
我在node.js项目中以偏执模式使用Sequelize.js,虽然软删除在查找和删除数据时按预期工作,但我很难找到取消删除软删除行的方法 我知道我可以通过使用删除行,如中所述 但偏执狂:假是不可用的时候Javascript 如何撤消Sequelize.js中的软删除,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我在node.js项目中以偏执模式使用Sequelize.js,虽然软删除在查找和删除数据时按预期工作,但我很难找到取消删除软删除行的方法 我知道我可以通过使用删除行,如中所述 但偏执狂:假是不可用的时候 在Sequelize中是否可以取消删除软删除行,或者我只是缺少了什么?您可以使用instance.setDataValue('deletedAt',null): 请注意,此代码段使用Sequelize@v2使用{paranoid:false}选项获取对象,即var model=model.fi
在Sequelize中是否可以取消删除软删除行,或者我只是缺少了什么?您可以使用
instance.setDataValue('deletedAt',null)
:
请注意,此代码段使用Sequelize@v2使用
{paranoid:false}
选项获取对象,即var model=model.findOne({where:{something:1},paranoid:false})
然后还原它model.restore()
我试图使用实例的更新方法而不是保存。这仅在更新数据中添加deletedAt
值集null
时有效
user.setDataValue('deletedAt', null);
user.update({deletedAt:null}, callback);
在这种情况下,更新中不需要paranoid选项。您可以使用
paranoid:false
来完成此操作:
Model.update( { deletedAt: null }, { where: {deletedAt: {ne: null} }, paranoid: false });
选项。偏执狂
如果为true,则仅更新未删除的记录。如果为false,则两者都是
已删除和未删除的记录将被更新。仅适用于以下情况
options.paranoid对于模型来说是正确的
有关更多详细信息:
我知道这个问题很老了,当时可能没有
解决方案
这是它唯一的工作方式,尽管我更喜欢
setDataValue
,因为这意味着在恢复+更新的情况下只需访问数据库一次。您的答案对像我这样看起来像这样的人很有用:d,那么有可能取回我们删除的数据吗?是的,你可以这么做。我遵循上面的代码,但不起作用,我尝试删除了一个数据,然后用上面的方法无法恢复,你知道吗???@ZumDummi,你也需要在模型中定义相同的东西,读一下:是的,我只是尝试更改它,但它说,列“deletedAt”不存在
,我现在想创建它,但是deletedAt列的数据类型是什么?
user.setDataValue('deletedAt', null);
user.update({deletedAt:null}, callback);
Model.update( { deletedAt: null }, { where: {deletedAt: {ne: null} }, paranoid: false });