[英]Sequelize - does not contain a string within a PostgreSQL array query
我有一個名為Staff
的 Sequelize 模型。 上面有一個數組字段,描述如下:
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
字段中沒有“講師”的員工提供服務。
我已經閱讀了文檔的這個頁面,建議我使用Sequelize.Op
的組合。 所以我創建了這個:
return Staff.findAll({
where: {
roles: {
[Sequelize.Op.not]: {[Sequelize.Op.contains]: ['instructor']},
}
}
}
)
以上拋出錯誤:
"message": "values.map is not a function"
但是,如果我要嘗試一個不是組合的查詢,例如:
return models.Staff.findAll({
where: {
roles: {
[Sequelize.Op.contains]: ['instructor']
}
}
}
)
查詢運行正常,這讓我相信我可能對Op
邏輯的組合方式有語法錯誤或誤解。
嘗試這個:
return models.Staff.findAll({
where: {
$not: {
roles: {
$contains: ['instructor'],
},
},
},
})
子句$not
不需要在您定位的列之前。
這對我來說很好用:
return models.Staff.findAll({
where: {
[Sequelize.Op.not]: {
roles: {
[Sequelize.Op.contains]: ['instructor'],
},
},
},
})
Sequelize.Op.not
不必出現在被Sequelize.Op.not
的列之前。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.