ライフサイクルコールバックは、特定のモデルメソッドの前後呼び出される関数です。例えば、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();
});//_∏_
}
};