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

构建REST调用动态过滤字符串时多条件AND拼接问题求助

解决方案

核心思路是先把所有生效的过滤条件存入数组,最后统一用and拼接,从根源避免多余的连接符问题,适配任意数量的过滤条件:

// 初始化条件数组,先放入默认必选条件
const conditions = ["IsLastForLevelAndParticipant eq 1"];

// 逐个判断过滤字段是否有值,有值就生成对应过滤表达式加入数组
if (this.state.participantFirstName) {
  // 替换单引号避免用户输入特殊字符导致语法错误
  const val = this.state.participantFirstName.replace(/'/g, "''");
  conditions.push(`substringof('${val}', Participant/FirstName)`);
}
if (this.state.participantLastName) {
  const val = this.state.participantLastName.replace(/'/g, "''");
  conditions.push(`substringof('${val}', Participant/LastName)`);
}
if (this.state.paticipantCertNumber) {
  const val = this.state.paticipantCertNumber.replace(/'/g, "''");
  conditions.push(`CertNumber eq '${val}'`);
}
if (this.state.startEmission) {
  conditions.push(`EmissionDate ge '${this.state.startEmission}'`);
}
if (this.state.endEmission) {
  conditions.push(`EmissionDate le '${this.state.endEmission}'`);
}
// 剩下的startValidity、endValidity、selectYesNo、selectLevel等字段按照同样规则补充即可

// 最后用and拼接所有条件,自动处理连接符
const query = conditions.join(' and ');

注意事项

  • 日期、数字、枚举类型的字段按照你对接的REST接口要求调整表达式写法即可,整体逻辑不变
  • 后续新增过滤条件时,只需新增对应判断+push逻辑即可,维护成本很低

内容的提问来源于stack exchange,提问作者Joao Livio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:36:03