Sequelize - does not contain a string within a PostgreSQL array query(Sequelize - 在 PostgreSQL 数组查询中不包含字符串)
问题描述
我有一个名为 Staff 的 Sequelize 模型.上面有一个数组字段,描述如下:
I have a Sequelize model called Staff. On it there's an array field described as follows:
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 字段中没有instructor"的员工提供服务.
I'm trying to create a GraphQL end point which serves up all staff which don't have 'instructor' in their roles field.
我已阅读 this page of the docs,建议我使用Sequelize.Op的组合.所以我创建了这个:
I've read this page of the docs, suggesting that I use a combination of Sequelize.Op. So I created this:
return Staff.findAll({
where: {
roles: {
[Sequelize.Op.not]: {[Sequelize.Op.contains]: ['instructor']},
}
}
}
)
上面抛出错误:
"message": "values.map is not a function"
但是,如果我要尝试不是组合的查询,例如:
However, if I am to try a query which isn't a combo such as:
return models.Staff.findAll({
where: {
roles: {
[Sequelize.Op.contains]: ['instructor']
}
}
}
)
查询运行正常,这让我相信我可能有语法错误或对 Op 逻辑如何组合的误解.
The query runs properly, this leads me to believe I perhaps have a syntax error or misunderstanding of how Op logic is combined.
推荐答案
试试这个:
return models.Staff.findAll({
where: {
$not: {
roles: {
$contains: ['instructor'],
},
},
},
})
子句 $not 必须在您的目标列之前.
The clause $not need to be prior than the column you target.
这篇关于Sequelize - 在 PostgreSQL 数组查询中不包含字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Sequelize - 在 PostgreSQL 数组查询中不包含字符串
基础教程推荐
- 即使用户允许,Gmail 也会隐藏外部电子邮件图片 2022-01-01
- 检查 HTML5 拖放文件类型 2022-01-01
- npm start 错误与 create-react-app 2022-01-01
- Bokeh Div文本对齐 2022-01-01
- Bootstrap 模态出现在背景下 2022-01-01
- 在 contenteditable 中精确拖放 2022-01-01
- 原生拖动事件后如何获取 mouseup 事件? 2022-01-01
- Fabric JS绘制具有活动形状的多边形 2022-01-01
- 如何添加到目前为止的天数? 2022-01-01
- fetch 是否支持原生多文件上传? 2022-01-01
