Sails.js и Waterline: поиск места поиска в массиве или вложенном объекте - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь написать сложный запрос поиска, используя Waterline из Sails.js. Вот упрощенный пример объекта, на котором я делаю поиск:

object description

По сути, я хочу написать запрос, в котором заданная строка поиска может быть равна id, быть в атрибуте myArray или иметь значение myNestedObject.nestedAttribute.

Я знаю, что могу сделать или вот так:

MyModel.find().where({ or: [] });

В этом массиве, который указан как or в .where(), должны быть добавлены совпадения, например:

{ id: { 'contains': searchTerm } }

Как мне сделать запрос с использованием Ватерлинии, где я могу предоставить поисковый запрос (searchTerm), чтобы узнать, находится ли это значение в объекте myArray? И как я могу проверить вложенные атрибуты? Я использую адаптер sails-mongo, но я бы не хотел писать какие-либо специфичные для Mongo запросы, чтобы в будущем у меня были все преимущества использования ORM (например, если мы переходим из Mongo или что-то в этом роде).

1 Ответ

0 голосов
/ 30 октября 2018

Невозможно выполнить поиск встраивания с использованием стандартного синтаксиса запроса по ватерлинии, однако вы можете попробовать:

  1. Структурирование ваших данных по-другому.
  2. Использование собственного запроса mongo .
  3. Используя .stream () и проверяйте каждую запись одну за другой, если этот запрос не чувствительны к задержке (например, запланированное задание или сценарий миграции).
...