Sequelize: отказаться от родителя, если предложение соответствует - PullRequest
0 голосов
/ 20 апреля 2019

Я бы хотел помочь с этой проблемой, с которой я столкнулся. Я не знаю, возможно ли отменить родительское значение на основе дочернего запроса [notIn].

У меня есть 3 модели, которые связывают многих со многими. Product -> ProductTag <- Tag </p>

Моя основная задача - получить продукты, которые не связаны с моим предложением where. Это означает, что если в ProductTag есть строка с tag_id и product_id, продукт возвращать не нужно, также, если в ProductTag нет никакого product_id относительно продукта. должны быть возвращены.

Мне удалось получить результаты запроса "правильно" с помощью:

Product.findAll({
  where: {
   [or]: {
      '$ProductTags.id$': null,
      '$ProductTags.tag_id$': {[notIn]: queryParams['TagId'].split(',')}
    }
  },
  include: [{
    model: ProductTag,
    required: false
  }]

Моя главная проблема в том, что если у меня есть продукт с id = 1 и в таблице ProductTag есть две строки с:

product_id = 1 & tag_id = 2
product_id = 1 & tag_id = 3

Если я выполню запрос с tag_id = 1, то я ожидаю, что весь продукт будет сброшен с product_id = 1.

Я пробовал группировать товар по Id, но у него есть другие вложенные отношения, которые я продолжаю получать

'Выражение № 30 списка SELECT отсутствует в предложении GROUP BY и содержит неагрегированный столбец \' ProductTags.id \ ', который функционально не зависит от столбцов в предложении GROUP BY; это несовместимо с sql_mode = only_full_group_by '

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

Заранее большое спасибо!

...