Как отфильтровать подписчиков по массиву тегов в Loopabck - PullRequest
0 голосов
/ 04 октября 2018

У меня есть две модели - подписчики и теги

Образцы данных:

{
 subscribers: [
  {
   name: "User 1",
   tags: ["a","b"] 
  },
  {
   name: "User 2",
   tags: ["c","d"] 
  }
 ]
}

Я хочу отфильтровать подписчиков на основе ихтеги.

  • Если я даю теги a и b, пользователь 1 должен перечислить
  • Если я даю теги a и c, то и пользователь 1, и пользователь 2 должныlist

Вот что я пробовал:

Метод 1:

tags - это столбец в subscribers модели с массивомтип данных

/subscribers/?filter={"where":{"tags":{"inq":["a","b"]}}} // doesn't work

Метод 2:

Создание отдельной таблицы tags и установка subscribers с множеством tags.

/subscribers/?filter={"where":{"tags":{"inq":["a","b"]}}} // doesn't work

Как я могу добиться этого в Loopback без написания пользовательских методов?

У меня есть Postgresql в качестве соединителя

Ответы [ 2 ]

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

Наконец-то нашел взлом, используя Regex!это не эффективное решение, но оно работает !!

{ "where": { "tags": { "regexp": "a|b" } } }

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

ОБНОВЛЕНИЕ

Как уже упоминалось в петлевых документах , вы должны использовать inq, а не In

* 1012Оператор * inq проверяет, совпадает ли значение указанного свойства с любым из значений, представленных в массиве.Общий синтаксис: {где: {свойство: { inq : [val1, val2, ...]}}}

Из этого:

/ подписчики /? filter = {"where": {"tags": { "In" : ["a", "b"]}}}

На это:

/ подписчики /? Filter = {"where": {"tags": { "inq" : ["a", "b"]}}}

...