如何在Sequelize.js中撤消软删除

tee*_*mup 9 javascript node.js sequelize.js

我在我的node.js项目中以偏执模式使用Sequelize.js,而软删除在查找和删除数据时按预期工作,我很难找到取消删除软删除行的方法.

我知道我可以按照文档中的说明使用已删除的行

Model.findAll({paranoid: false, where: {deletedAt: {ne: null}}})
Run Code Online (Sandbox Code Playgroud)

但偏执:更新时无法使用false .

是否可以在Sequelize中取消删除软删除的行,或者我只是遗漏了什么?

sde*_*old 16

你可以使用instance.setDataValue('deletedAt', null):

var Bluebird  = require('bluebird');
var models    = require('./models');

models.sequelize.sync({ force: true })
.then(function () {
  return models.User.create({ name: 'user' })
})
.then(function (user) {
  return user.destroy()
})
.then(function () {
  return models.sequelize.models.User.findAll({ paranoid: false });
})
.then(function (users) {
  var user = users[0];
  user.setDataValue('deletedAt', null);
  return user.save({ paranoid: false });
}).then(function () {
  return models.sequelize.models.User.findAll();
}).then(function (users) {
  console.log(users[0]);
});
Run Code Online (Sandbox Code Playgroud)

请注意,此代码段使用Sequelize @ v2


Mir*_*sin 14

{paranoid: false}选择你的对象,即.var model = Model.findOne({ where: { something: 1 }, paranoid: false })然后恢复它model.restore() http://docs.sequelizejs.com/en/latest/api/instance/#restoreoptions-promiseundefined


Viv*_*shi 5

您可以使用以下方法来做到这一点paranoid: false

Model.update( { deletedAt: null }, { where: {deletedAt: {ne: null} }, paranoid: false  });
Run Code Online (Sandbox Code Playgroud)

偏执的选项

如果为 true,则仅更新未删除的记录。如果为 false,则已删除和未删除的记录都将被更新。仅当 options.paranoid 对于模型为 true 时才适用。

欲了解更多详细信息:请阅读

我知道这个问题很老了,当时可能没有解决方案