Sequalize фильтрация на подмоделях - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь отфильтровать подчиненную модель, для этого я делаю следующий фильтр:

await models.Event.findAll({
  include: [
    {
      model: models.SubEvent,
      include: [
        {
          model: models.Game,
          where: {
            [models.Sequelize.Op.or]: {
              player1Team1Id: args.playerId,
              player2Team1Id: args.playerId,
              player1Team2Id: args.playerId,
              player2Team2Id: args.playerId
            }
          },
          required: true
        }
      ]
    }
  ]
});

Структура модели следующая: A Event.hasMany(SubEvent) и SubEvent.hasMany(Game)

но следующее дает мне все события. не тот, где игрок соответствует

Любые предложения о том, почему это происходит?

1 Ответ

1 голос
/ 24 января 2020

Предложение where искажено, поэтому, вероятно, Sequelize игнорирует его (вы можете подтвердить это, посмотрев на команду generate SQL). OR должен быть массивом объектов, как показано ниже.

 where: {
    [models.Sequelize.Op.or]: 
      [
         {player1Team1Id: args.playerId},
         {player2Team1Id: args.playerId},
         {player1Team2Id: args.playerId},
         {player2Team2Id: args.playerId}
      ]
  },

Странно, исключений не было.

hth

...