如何在Sequelize.js中取消软删除
我在我的node.js项目中以偏执狂模式使用Sequelize.js,而软删除在查找和删除数据时按预期方式工作,但我无法find删除软删除行的方式。
我知道我可以通过使用文档中解释的删除行
Model.findAll({paranoid: false, where: {deletedAt: {ne: null}}})
但偏执: 更新时不可用。
在Sequelize中甚至可能删除软删除的行,或者我只是失去了一些东西?
你可以使用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