Как использовать переменную в качестве имени поля в запросе Монго в Meteor?

Как мне использовать переменную в качестве имени поля в запросе Монго в приложении Meteor?

Вот пример...

Это запускает поиск в моей коллекции контроллеров запросов после использования заглавной буквы имени родительского идентификатора дочернего элемента. Ребенок - это поле пользователей.

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

Как вы можете видеть, мой контроллер - это имя переменной для элемента коллекции, которая позволяет мне иметь одну строку кода для поиска дочерних элементов контроллера / коллекций, но мне нужно иметь возможность установить имя дочернего поля в переменную. В приведенном выше примере это будут пользователи, но я хочу, чтобы это было имя переменной.

Я пробовал это, но это не работает.

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()

возвращает пользователей

Есть идеи? Если бы я мог понять, как использовать имя переменной в монго-запросе в метеоре, это значительно уменьшило бы мой код.

1 ответ

Решение

Запрос - это просто объект 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();

Это делает трюк?

Другие вопросы по тегам