Sequelize.js NodeJS Sequelize-使用嵌套选择查询删除
我有一个SQL查询,如:Sequelize.js NodeJS Sequelize-使用嵌套选择查询删除,sequelize.js,Sequelize.js,我有一个SQL查询,如: delete from myTable where versionId in (select id from version where code='TEST') 嵌套在删除查询中的选择查询。我想使用NodeJS Sequelize构建相同的查询,因此代码可以是这样的: db.myTable.destroy({ where: { versionId: { $in: [12, 34, 56] } } }).t
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]是硬编码的,但是我想使用select查询来代替它
我试着用那种方式在谷歌上搜索,但现在我找不到解决办法
有什么想法吗?你想要的是一个好主意。试试这个:
db.myTable.destroy({
where: {
versionId: {
$in: [
sequelize.literal("select id from version where code='TEST'")
]
}
}
}).then(nbDeleted => {
...
}
Sequelize将直接将该文本放入where in子句中,而不进行任何处理。您要的是一个。试试这个:
db.myTable.destroy({
where: {
versionId: {
$in: [
sequelize.literal("select id from version where code='TEST'")
]
}
}
}).then(nbDeleted => {
...
}
Sequelize只需将该文本直接放入where in子句中,而无需任何处理。谢谢您的回答,但如果这样,“无需任何处理”,SQL注入可能会有问题,因为“TEST”必须是一个参数?值“TEST”是从用户发送的吗?如果是这样,你是对的,你需要对它进行消毒。如果不是,那么SQL注入就不会成为问题——除非您计划自己发起攻击!你的问题的真实背景是什么?您要从哪个表中删除?“TEST”值在实践中从何而来?检查后,用户将永远不会发送参数,因此我不需要对其进行消毒。再次感谢您的回答,但是如果这样,“没有任何处理”,SQL注入可能会有问题,因为'TEST'必须是一个参数?值'TEST'是从用户发送的吗?如果是这样,你是对的,你需要对它进行消毒。如果不是,那么SQL注入就不会成为问题——除非您计划自己发起攻击!你的问题的真实背景是什么?您要从哪个表中删除?“TEST”值在实践中从何而来?检查后,用户将永远不会发送参数,因此我不需要对其进行消毒。又是Thx。