8

MeteorアプリケーションのMongoクエリでフィールド名として変数を使用するにはどうすればよいですか。

ここに例があります...

これにより、子の親IDのコレクション名を大文字にした後、リクエストコントローラーコレクションで検索が実行されます。子はユーザーフィールドです。

window[Meteor.request.controller.capitalise()]["find"]({ _id: Session.get('parent_id'), users: params.child }).count()

ご覧のとおり、私のコントローラーはコレクションアイテムの変数名であり、コントローラー/コレクションの子を検索するための1行のコードを使用できますが、子フィールド名を変数に設定できる必要があります。上記の例では、それはユーザーになりますが、変数名にしたいです。

これを試しましたが、機能しません。

window[Meteor.request.controller.capitalise()]["find"]({ _id: Session.get('parent_id'), [Session.get('child_collection_name').decapitalise()]: params.child }).count()

どこ

Session.get('child_collection_name').decapitalise()

ユーザーを返します

何か案は?meteorのmongoクエリで変数名を使用する方法を理解できれば、コードのフットプリントが大幅に削減されます。

4

1 に答える 1

14

クエリは単なるJavaScriptオブジェクトであるため、段階的に作成できます。

var query = { _id: Session.get('parent_id') };
var myCustomField = Session.get('child_collection_name').decapitalise();
var myCustomValue = params.child;
query[myCustomField] = myCustomValue;
var count = SomeCollection.find(query).count();

それでうまくいきますか?

于 2012-08-19T03:15:07.947 に答える