Feathers-продолжение с помощью Postgres: как запросить массив

#postgresql #sequelize.js #feathersjs #feathers-sequelize

#postgresql #sequelize.js #feathersjs #feathers-продолжить

Вопрос:

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

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

  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:

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

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

Итак, исправление заключается в изменении этой строки кода

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