@quex

Использование projection-парсера MongoDB (mongoose, NodeJS)

Добрый вечер.
Есть некая функция
findUsers(ids, projection, callback){...}

Функция принимает список айдишников юзеров, поля, которые нужно выбрать и, соответственно, колбэк.
Функция сперва выполняет поиск указанных юзеров в Redis (юзеры хранятся в сериализованном виде в строковых ключах). Если таковых там нет, то добирает недостающих из монги, после чего их кэширует, чтобы при последующем таком же запросе, соответственно, уже все эти юзеры брались из кэша. При обращении в монгу за недостающими юзерами, мы берем документ полностью (не используем projection переданный вторым аргументом), т.к. юзера нам нужно будет положить в кэш.

Таким образом, функция склеивает данные из редиса и монги (+кэширует). Загвоздка в том, что перед передачей результата в колбэк, мне нужно их отфильтровать и вернуть только те поля, которые были запрошены (через projection, второй аргумент функции).
Можно ли как-то воспользоваться нативным парсером, который используется внутри методов .find, findOne? Т.е. скормить ему мой склеенный результирующий объект и projection и чтобы он это все отфильтровал. Мне нужно, чтобы корректно обрабатывались проекции вида {wishes.$.title: 1}.
Можно ли обойтись без своих велосипедов?
  • Вопрос задан
  • 2881 просмотр
Пригласить эксперта
Ответы на вопрос 1
AlexFork
@AlexFork
Насколько я понимаю, драйвер под MongoDB всего лишь строит запросы. Вся логика лежит на плечах самой MongoDB. Заместо городить велосипед используй pick() из Underscora/Lo-Dash'а.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы