Sanity.io GROQ动态构造patch查询 模板字符串作字段名报错如何解决
问题原因
该报错是JavaScript对象字面量的语法错误:如果需要使用动态计算的内容作为对象的键,必须将对应表达式放在方括号[]中包裹。你直接把模板字符串写在对象键的位置,JS解析器无法识别反引号作为对象键的开头,就会抛出Unexpected token错误。
正确实现代码
patch: { id: "f6c46b53-9313-4354-a4d6-7a40b06ee4c0", set: { [`rewardItem[_key == "${key}"].lastTimeReward`]: "Test", }, }
注意事项
- 方括号
[]会先计算内部的模板字符串结果,再将结果转为字符串作为set对象的键,最终生成的结构和你使用固定值的可运行代码完全一致 - 模板字符串内部的双引号不需要额外加反斜杠转义,写法更简洁
- 如果
key变量来自用户输入,建议提前做格式校验,避免构造出非法的Sanity查询路径
内容的提问来源于stack exchange,提问作者Endrit Shabani
相关产品推荐
相关产品推荐

