首页 > 解决方案 > where(property IN array) 在 typeorm 查询生成器中如何工作?

问题描述

我需要使用查询生成器通过 id 数组过滤实体的 id。

这是代码:

await this._productRepo
.createQueryBuilder('Product')
.where('Product.id IN (:...ids)', { ids: [1, 2, 3, 4] })

这是此查询生成的 sql:

SELECT [*FIELDS*] WHERE ( `Product`.`id` IN ? ) AND ( `Product`.`deletedAt` IS NULL )

这是一个代码示例,我在 typeorm 的文档中找到,但我不明白为什么会有 ? 在 sql 中,而不是 id 列表。

我需要查询生成器,因为下一步是过滤连接表的 id,所以我不能使用存储库方法。

标签: typescriptnestjstypeormquery-builder

解决方案


解决了。

上面的查询生成器语法有效。问题出在我的回购代码的另一部分。

如果有人似乎有类似的问题,请检查您的所有代码,getSql() 报告的事实:

WHERE ( `field`.`property` IN ? )

是“正常的”,我认为是因为 typeorm 的开发人员不想打印所有数组的值。


推荐阅读