NestJS中TypeORM不使用QueryBuilder实现AND条件查询的方法
TypeORM 中 findOne 方法的 where 参数传入数组时,默认执行 OR 逻辑,数组内的多个条件满足任意一个即可命中结果。
不需要使用 QueryBuilder 等高阶语法,直接将需要并列匹配的字段规则封装为单个对象传入 where 参数即可实现 AND 查询,对象内的所有键值对会自动按 AND 逻辑拼接查询条件。
正确代码示例:
async getByUniqueConstraints(user: User){ const {email, phoneNumber} = user const foundUser = await this.userRepository.findOne({ where: { email: email, phoneNumber: phoneNumber } }); return foundUser; }
如果你的变量名和数据库表字段名完全一致,可以使用简写语法:
async getByUniqueConstraints(user: User){ const {email, phoneNumber} = user const foundUser = await this.userRepository.findOne({ where: { email, phoneNumber } }); return foundUser; }
如果后续需要新增更多 AND 匹配条件,直接在 where 对应的对象内新增对应字段的匹配规则即可。
内容的提问来源于stack exchange,提问作者Kristoffer Tølbøll
相关产品推荐
相关产品推荐

