生命週期回呼是在特定模型方法之前或之後呼叫的函式。例如,您可以使用生命週期回呼在建立或更新 User
記錄之前自動計算 fullName
屬性的值。
Sails 預設公開了一些生命週期回呼
.create()
的生命週期回呼afterCreate
生命週期回呼只會在 fetch
meta 旗標設定為 true
的查詢中執行。有關使用 meta
旗標的更多資訊,請參閱 Waterline 查詢。
當您呼叫
.createEach()
時,beforeCreate
也會在資料的批次插入中執行。但是,afterCreate
不會。
.update()
的生命週期回呼afterUpdate
生命週期回呼只會在 fetch
meta 旗標設定為 true
的 .update()
查詢中執行。有關使用 meta
旗標的更多資訊,請參閱 Waterline 查詢。
.destroy()
的生命週期回呼afterDestroy
生命周期回呼只會在 fetch
meta 旗標設定為 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();
});//_∏_
}
};