SequelizeQueryChainerに問題があります。通常、これを行う必要はありませんが、アソシエーション管理に組み込まれているモジュールを使用する代わりに、自分のアソシエーションを処理することを早い段階で決定しました(これは非常に厳しいことが判明しました)。
私はRESTルーチンを書き出しており、すでにフェッチされているか、フェッチする必要がある他のレコードに基づいて、いくつかのレコードを削除しようとしています。4〜5個のネストされたコールバックを使用する代わりに、QueryChainerとシリアル実行が適切であると判断しました。
この例では、ユーザーを取得しています。ユーザーが見つかった場合は、特定の関連付けの削除を処理するための一連のクエリをつなぎ合わせたいと思います。私が抱えている問題は、主に、モデルのEventEmittingメソッドを使用する以外に、チェイナーの構文を理解することです。
// Find user, destroy it and associations
db.Models.user.find({ where: {STUID: id} })
.success(function (user) {
if (!user) {
res.locals.err = {
status: 'FAILED',
message: 'Could not delete user',
reason: 'No user resource found'
}
} else {
chain = new db._sqlize.Utils.QueryChainer();
chain.add(user.destroy())
// Check and destroy author association
if (user.AUTHOR) {
// Would like to fetch the specific author model
// db.models.author.find({})
// ... and destroy it too,
// author.destroy()
// without having to nest
}
}
});
sequelize querychain構文は、次のようなことを行うように指定しています。
.add(Model, 'function', [param1, param2])
しかし、それが正確に何を意味するのかはよくわかりません。ここで関数をインラインで定義できますか?関数は、他の場所ですでに定義されているものを探す文字列ですか、それとも「追加」しているモデルの関数ですか?ドキュメントはここで少し急いでいるように感じます。