[英]How to undo soft delete in Sequelize.js
您可以使用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]);
});
请注意,此代码段使用Sequelize @ v2
使用{paranoid: false}
选项获取对象,即。 var model = Model.findOne({ where: { something: 1 }, paranoid: false })
然后将其恢复为model.restore()
http://docs.sequelizejs.com/en/latest/api/instance/#restoreoptions -promiseundefined
你可以通过使用paranoid: false
来做到这一点 :
Model.update( { deletedAt: null }, { where: {deletedAt: {ne: null} }, paranoid: false });
options.paranoid
如果为true,则仅更新未删除的记录。 如果为false,则将更新已删除和未删除的记录。 仅当options.paranoid对于模型为true时才适用。
有关更多详细信息:请阅读
我知道问题很严重,当时可能没有解决方案
我试图使用实例的更新方法而不是保存。 这仅在更新数据中添加deletedAt
值set null
deletedAt
有效。
user.setDataValue('deletedAt', null);
user.update({deletedAt:null}, callback);
在这种情况下,更新中不需要偏执选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.