我有帶有 sequelize 和 mysql 的節點 js。我使用以下語法來查找一條記錄
await SkillPlanUser.findOne({
where: { deleted_at: {
[Op.ne]: null
},skill_plan_id: skill_plan_id, user_id: val },
})
但它的執行如下:
SELECT `id`,
`skill_plan_id`,
`user_id`,
`created_at`,
`updated_at`,
`deleted_at`
FROM `skill_plan_user` AS `skill_plan_user`
WHERE (`skill_plan_user`.`deleted_at` IS NULL
AND (`skill_plan_user`.`deleted_at` IS NOT NULL
AND `skill_plan_user`.`skill_plan_id` = '3'
AND `skill_plan_user`.`user_id` = '5'))
LIMIT 1;
在上面的查詢skill_plan_user中。deleted_atIS NULL AND` ...即使未提及,也會添加。
我不明白為什么要添加它以及如何洗掉它?
請指導。
uj5u.com熱心網友回復:
您似乎paranoid: true在模型選項中指出(這意味著您使用軟洗掉功能)。
當為模型打開偏執模式時,默認情況下您將獲得所有未洗掉的記錄,因此無需指示此情況:
deleted_at: {
[Op.ne]: null
}
Sequelize 會自己完成(正如您已經發現的那樣)。如果您想獲取所有記錄,包括已洗掉的記錄,您需要在評論中已經提到的 Emma 中paranoid: false注明。findOne
await SkillPlanUser.findOne({
where: { skill_plan_id: skill_plan_id, user_id: val },
}, { paranoid: false })
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/513603.html
