Перья-Sequelize с Postgres: как запросить массив - PullRequest
1 голос
/ 01 апреля 2019

Я хочу посмотреть, содержит ли массив одно или несколько значений внутри него.

Это определение поля модели:

 keywords: {
              type: Sequelize.ARRAY(Sequelize.STRING),
              defaultValue: [],
              allowNull: false,
           },

Это тестируемый мной запрос:

context.app.services.jobOffers.Model.findAll({
        where: {
            keywords: {
                $contains: ['hello'],
            },
        },
    })
     .then(result => {
         console.log('RESULT:', result)
     })
     .catch(err => {
            console.log('ERROR:', err)
     })

Это ошибка, которую я получаю:

ERROR: TypeError: values.map is not a function

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

https://github.com/feathersjs-ecosystem/feathers-sequelize/issues/135

1 Ответ

1 голос
/ 03 апреля 2019

Кажется, проблема была в версиях Sequelize.Это было ясно мне одним из авторов Feathers.js @ daffl

"В Sequelize v5 и более поздних версиях вам нужно использовать символы типа [Op.contains] см. (http://docs.sequelizejs.com/manual/querying.html#operators)"

).исправление состоит в том, чтобы изменить эту строку кода

where: {
         keywords: {
          [Op.contains]: ['hello'],
         },
       },
...