生命周期回调是在特定模型方法之前或之后调用的函数。例如,您可能使用生命周期回调在创建或更新 User 记录之前自动计算 fullName 属性的值。
Sails 默认情况下公开了一些生命周期回调
.create() 上的生命周期回调afterCreate 生命周期回调将仅在将 fetch 元标志设置为 true 的查询上运行。有关使用 meta 标志的更多信息,请参见 Waterline 查询。
beforeCreate也会在调用.createEach()时运行批量插入数据。但是,afterCreate不会。
.update() 上的生命周期回调afterUpdate 生命周期回调将仅在具有 fetch 元标志设置为 true 的 .update() 查询上运行。有关使用 meta 标志的更多信息,请参见 Waterline 查询。
.destroy() 上的生命周期回调afterDestroy 生命周期回调将仅在具有 fetch 元标志设置为 true 的 .destroy() 查询上运行。有关使用 meta 标志的更多信息,请参见 Waterline 查询。
如果您想在保存到数据库之前对密码进行哈希处理,则可以使用 beforeCreate 生命周期回调。
// User.js
module.exports = {
attributes: {
username: {
type: 'string',
required: true
},
password: {
type: 'string',
minLength: 6,
required: true
}
},
beforeCreate: function (valuesToSet, proceed) {
// Hash password
sails.helpers.passwords.hashPassword(valuesToSet.password).exec((err, hashedPassword)=>{
if (err) { return proceed(err); }
valuesToSet.password = hashedPassword;
return proceed();
});//_∏_
}
};