NodeJS Sequelize - 使用嵌套选择查询删除

时间:2017-07-27 14:39:24

标签: 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] }
        }
    }).then(nbDeleted => {
        ...
    }

在该示例中,[12,34,56]是硬编码的,但我想使用选择查询而不是它。

我试图用这种方式搜索,但是现在我无法找到解决方案。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

你所追求的是literal。试试这个:

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

Sequelize会直接将这个字面直接放入你的where-in子句而不进行任何处理。