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