[英]Sequelize - query with or operator and model association
使用Sequelize ,我有兩個具有多對多關聯的模型: User
和Category
。
我想獲取屬於當前用戶的所有類別,以及具有特定屬性的類別,但我不知道如何,僅需一個查詢...
根據文檔 ,我正在使用Op.or
運算符,以及用於關聯模型的$Model.attribute$
語法(請參見此處 )。
let categories = await models.category.findAll({
where: {
[Op.or]: [
{ someCategoryProperty: true },
{ '$User.id$': req.currentUser.id },
],
},
include: [{
model: models.user,
as: 'User',
}],
});
如果我為Category模型添加2個條件,該運算符將起作用,但是如何在關聯上添加一個條件?
我終於找到了提示:
實際上, $Model.attribute$
不是一個好的模式, $database_table_name.attribute$
是一個好的模式。
使用'$..$'
語法,我們必須使用數據庫表名稱 ,而不是模型。
如果我的模型稱為user
,則Sequelize將數據庫名稱設置為users
!
所以這段代碼有效:
let categories = await models.category.findAll({
where: {
[Op.or]: [
{ someCategoryProperty: true },
{ '$users.id$': req.currentUser.id },
],
},
include: [{
model: models.user,
}],
});
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.