2017-07-27 70 views
0

刪除我有這樣一個SQL查詢:的NodeJS Sequelize - 與嵌套select查詢

delete from myTable where versionId in (select id from version where code='TEST') 

嵌套刪除查詢中選擇查詢。我想建立使用的NodeJS Sequelize相同的查詢,因此代碼可能是這樣的:

db.myTable.destroy({ 
     where: { 
      versionId: { $in: [12, 34, 56] } 
     } 
    }).then(nbDeleted => { 
     ... 
    } 

在該示例中,[12,34,56]是硬編碼的,但代替它,我想喜歡使用選擇查詢。

我試圖用這種方式進行搜索,但現在我無法找到解決方案。

任何想法?

回答

2

你所追求的是literal。試試這個:

db.myTable.destroy({ 
    where: { 
     versionId: { 
     $in: [ 
      sequelize.literal("select id from version where code='TEST'") 
     ] 
     } 
    } 
}).then(nbDeleted => { 
    ... 
} 

Sequelize只會將該文字直接放入您的where-in子句中而不進行任何處理。

+0

感謝您的回答,但通過這種方式,「沒有任何處理」,由於'TEST'必須是參數,所以它是SQL注入的問題? – gduh

+0

值「TEST」是從用戶發出的東西嗎?如果是這樣,你是對的,你需要清理它。如果沒有,那麼SQL注入將不會是一個問題 - 除非你打算自己發起攻擊,對自己! 什麼是你的問題的真實環境?你從哪個表中刪除? 'TEST'的價值在哪裏來自於實踐? –

+0

檢查後,參數永遠不會被用戶發送,所以我不需要對它進行消毒。 Thx再次。 – gduh