フック
creating、created、updating、saved、deleting、restoring、forceDeleted などのイベントで、モデルのライフサイクルにフックできます。
Sutando のモデルはいくつかのイベントを発行し、モデルのライフサイクルにおける次のタイミングにフックできます:creating、created、updating、updated、saving、saved、deleting、deleted、restoring、restored、trashed、forceDeleting、forceDeleted。
-ing で終わるイベント名はモデルへの変更が永続化される前に発行され、-ed で終わるイベントはモデルへの変更が永続化された後に発行されます。
利用可能なフック
| フック | 説明 |
|---|---|
creating, created |
新しいモデルが最初に保存されるとき |
updating, updated |
既存のモデルが変更され、save メソッドが呼び出されたとき |
saving, saved |
モデルが作成または更新されたとき - モデルの属性が変更されていない場合でも |
deleting, deleted |
モデルが削除されたとき(ソフトデリートを含む) |
restoring, restored |
モデルが復元されたとき |
trashed |
モデルがソフトデリートされたとき |
forceDeleting, forceDeleted |
モデルが完全に削除されたとき |
フックの宣言
現在、プログラムからフックを追加する方法は 2 つあります:
class User extends Model {}
User.creating(user => {
//
});
class User {
static booted() {
this.creating(user => {
//
});
this.created(user => {
//
});
}
}
フックとトランザクション
User.deleted(async (user, { client }) => {
const query = user.related('posts');
if (client) {
query.transacting(client);
}
await query.delete();
});
const trx = await sutando.beginTransaction();
await user.delete({
client: trx
});
await trx.commit();