我希望我的应用程序中以前存在的用户已使用偏执模式删除(现在其字段deletedAt
不是null
),以便能够使用相同的电子邮件再次注册。因此,当API通过之前使用过的电子邮件注意到用户创建时,它会将先前存在的寄存器的null
字段设置为deletedAt
,而不是创建新用户。
通常为了寻找我会做的用户,
User.find( { where: { email: req.body.user.email } })
但是在检查创建的SQL查询时,它包括
Users.deletedAt IS NULL
在处理偏执模型时是否有任何特殊的寻找方式?
答案 0 :(得分:30)
只需运行您的查询:
User.find({
where: {email: req.body.user.email},
paranoid: false
})
答案 1 :(得分:9)
Sequelize内置了此功能。根据他们的API文档,您可以包含“偏执狂”。在查找电话的选项中标记。
e.g。
User.find({where: {email: req.body.user.email}}, {paranoid: false}).success(models) {
//models contains both deleted and non-deleted users
}
参考:http://docs.sequelizejs.com/en/latest/api/model/#findalloptions-promisearrayinstance
答案 2 :(得分:2)
你可以使用钩子。
var uuid = require('node-uuid')
module.exports = function (sequelize, DataTypes) {
return sequelize.define("multi_route", {
email: {
type: DataTypes.STRING,
unique: false,
}
//other fields
}, {
timestamps: true,
paranoid: true,
hooks: {
beforeUpdate: function (multiFare, next) { // berforeUpdate will called after beforeDestroy
if (multiFare.email.indexOf("_____destroyed") > -1) { // check contains '_____destroyed' string
multiFare.email = multiFare.email + uuid.v1() // set unique value
}
next()
},
beforeDestroy: [function (multiFare, next) { // beforeDestroy will called before one instance destroyed
multiFare.email = multiFare.email + '_____destroyed' // flag this will destroy
next()
}]
}
})
}
对不起我的不好评论:(