Как использовать переменную в качестве имени поля в запросе Монго в 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();
Это делает трюк?