2017-05-31 14 views
1

Bookshelf hasManyの関係が全くロードされていないか、ブックシェルフの関係がフェッチされた場合に検出する

Bookshelfjsドキュメントによれば:

関連する方法は、モデルに関係ハッシュにロードされ、指定の関係を返し、または関連する関連メソッドを呼び出し、1つは存在していなければ関係ハッシュに追加まだロードされています。 Model#related

fetch{ withRelated: ['relation'] }を与える場合は、関係がKnexにdebug: trueを設定した場合の出力を見ることができるようにロードされ、それらが存在する場合related('relation')は、モデルが含まれています。

しかし、関連するモデルがない場合、related('relation')の戻り値は、withRelatedオプションをまったく与えない場合と同じように見えます。データが以前にロードされたかどうかを判断するために使用することはできません。 related('relation').fetch()を複数回呼び出すと、多くのSQLクエリが発生します。

私は基本的に何か間違っているのですか、それとも、関係のために自分のキャッシュを構築する必要がありますか?私はフィルタリングする必要があるリレーションを持っており、モデリングされたインスタンスがフィルタリングされたデータに対して素敵なゲッタを持つようにしたいと思います。

答えて

0

公式の方法はありません。GitHub issueを参照してください。


しかし、あなたが望むなら、あなたは正式にサポートされていない方法でそれを確認することができます。

modelInstance.relations[relationName] 
// e.g. 
user.relations.organization // undefined if not fetched yet 
関連する問題