#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'],
},
},