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

如何在DataWeave中拼接含$like的GraphQL查询避免语法错误

解决DataWeave拼接GraphQL查询含$like的语法问题

问题根源

  1. 第一个错误(Unable to resolve reference of: 'like'):DataWeave中$是变量引用标识符,直接写"$like"会被解析为尝试引用名为like的变量,导致找不到变量报错。
  2. 第二个错误(Syntax Error: Unexpected <EOF>):手动转义时字符串拼接逻辑错误,导致查询字符串未正确闭合,触发文件提前结束的语法问题。

解决方案

方案1:修正字符串拼接逻辑(手动转义)

调整拼接方式,将变量从字符串片段中分离,确保$和双引号转义正确:

'funquery(filter:"{\"' ++ vars.filter ++ '\":{\"\\$like\":\"' ++ vars.value ++ '\"}}") {
  #values to get
}'
  • 用\"转义字符串内的双引号,保证JSON格式合法
  • 用\\$转义$,避免DataWeave将其识别为变量引用
  • 通过++将字符串片段与变量正确拼接,确保整体字符串闭合完整

方案2:通过对象转JSON拼接(推荐)

先构建符合格式的JSON对象,再转换为字符串拼接,彻底避免手动转义的麻烦:

var filterObject = { (vars.filter): { "$like": vars.value } }
var filterJson = write(filterObject, "application/json", { indent: false })
---
"funquery(filter:" ++ filterJson ++ ") {
  #values to get
}"
  • 使用DataWeave动态键语法(vars.filter)构建过滤条件对象
  • 用write函数将对象转为无缩进的JSON字符串,保证格式正确
  • 直接拼接JSON字符串到GraphQL查询中,语法更清晰,不易出错

内容的提问来源于stack exchange,提问作者Rafael Monteiro Matos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:05:22