在findOneOptions查询的WHERE块加条件后,仅匹配首个结果的问题
问题分析与解决
你的代码里callFrom: CALL_FROM.CB || CALL_FROM.KH写法错误,JavaScript/TypeScript的||是逻辑或运算符,会直接返回第一个真值的枚举值,所以实际查询条件里callFrom只等于CALL_FROM.CB,自然只能匹配到该值对应的数据,无法包含CALL_FROM.KH的记录。
正确写法
要实现“callFrom等于CB或KH”的查询,TypeORM支持用数组来表示IN查询,修改where条件如下:
async getListOfCustomer(customerId: string) { return await this.historyCallRepository.find({ where: { customerId, callFrom: [CALL_FROM.CB, CALL_FROM.KH], // 用数组表示多值匹配 }, order: { createdAt: 'DESC', }, }); }
这样查询就会返回所有customerId匹配且callFrom为CB或KH的历史通话记录,按创建时间倒序排列。
内容的提问来源于stack exchange,提问作者Lý Thành Long
相关产品推荐
相关产品推荐

