2017-07-27 5 views
0

を削除します。その例でNodeJS Sequelizeは、私のようなSQLクエリを持っているネストされた選択クエリ

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

私はだろう、ハードコードされ、代わりにそれをされている[12、34、56]:コードはこのようなものとすることができるので、私は、NodeJS Sequelizeを使用して、同じクエリを作成したいですselectクエリを使用するのが好きです。

私はそのようにしてgoogledしようとしましたが、今は解決策を見つけることができません。

アイデア?

答えて

2

あなたの後ろはliteralです。これを試してください:

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

Sequelizeはそのままリテラルをそのままどこの句にも入れません。

+0

「処理なしで」というお返事ありがとうございます。「TEST」はパラメータでなければならないため、SQLインジェクションの問題になりますか? – gduh

+0

値 'TEST'はユーザーから送信されるものになりますか?もしそうなら、そうです、あなたはそれを浄化する必要があります。そうでなければ、SQLインジェクションは問題にはなりません - あなた自身で、あなた自身で攻撃を準備する予定がない限り、SQLインジェクションは問題になりません! あなたの問題の真のコンテキストは何ですか?どのテーブルから削除しますか?値 'TEST'は実際にどこから来ますか? –

+0

チェックした後、パラメータはユーザによって送信されないので、それをサニタイズする必要はありません。再びThx。 – gduh

関連する問題