用Postgres进行羽毛替换:如何查询数组

时间:2019-04-01 09:23:49

标签: postgresql sequelize.js feathersjs feathers-sequelize

我想看看数组中是否包含一个或多个值。

这是一个模型字段定义:

 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 个答案:

答案 0 :(得分:1)

似乎问题出在Sequelize版本上。 Feathers.js @daffl

的一位作者向我明确指出了这一点。

“在Sequelize v5和更高版本中,您需要使用[Op.contains]参见(http://docs.sequelizejs.com/manual/querying.html#operators)之类的符号”

因此解决方法是更改​​此行代码

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