Sequelize - не содержит строку в запросе массива PostgreSQL - PullRequest
0 голосов
/ 23 октября 2018

У меня есть модель Sequelize, которая называется Staff.В нем есть поле массива, описанное следующим образом:

const Staff = sequelize.define("staff", {
    name: {
        type: DataTypes.STRING,
    },
    email: {
        type: DataTypes.STRING,
        unique: true
    },
    password: {
        type: DataTypes.STRING,
    },
    roles: {
        type: DataTypes.ARRAY(DataTypes.STRING)
    },
});

Я пытаюсь создать конечную точку GraphQL, которая обслуживает весь персонал, у которого нет «инструктора» в их поле roles.

Я прочитал эту страницу документов , предлагая использовать комбинацию Sequelize.Op.Итак, я создал это:

return Staff.findAll({
        where: {
            roles: {
                [Sequelize.Op.not]: {[Sequelize.Op.contains]: ['instructor']},
            }
        }
    }
)

Выше выдает ошибку:

"message": "values.map is not a function"

Однако, если я хочу попробовать запрос, который не является комбо, такой как:

return models.Staff.findAll({
        where: {
            roles: {
                [Sequelize.Op.contains]: ['instructor']
            }
        }
    }
)

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

1 Ответ

0 голосов
/ 10 декабря 2018

Попробуйте это:

return models.Staff.findAll({
  where: {
    $not: {
      roles: {
        $contains: ['instructor'],
      },
    },
  },
})

Предложение $not должно предшествовать столбцу, на который вы нацелены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...