You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 22:30:32