AWS前端问题:查询嵌套属性对象失败,如何指定属性名
嵌套属性查询的正确写法
首先你得先检查拼写:你写的metadata.saba.couse-number里的couse是笔误,应该是course——这大概率是查询失效的原因之一。
接下来根据你实际的查询场景,嵌套属性的写法分几种情况:
1. 给后端API传查询参数
很多后端框架支持用点语法传递嵌套属性参数,比如直接拼在URL里:
GET /your-api-endpoint?pk=49&metadata.saba.course-number=TALF-50
但要注意,属性名里的连字符可能需要URL编码(转成%2D),或者有些后端框架不支持带特殊字符的嵌套字段名,这时可以试试括号语法:
GET /your-api-endpoint?pk=49&metadata[saba][course-number]=TALF-50
具体要看后端的参数解析规则。
2. 前端本地过滤数组
如果是拿到后端返回的数据后,在前端用JS直接过滤数组,带连字符的属性不能用点语法访问,必须用方括号语法:
// 假设你拿到的数据集是records数组 const filtered = records.filter(item => { // 用可选链?.避免嵌套属性不存在时抛出错误 return item.pk === 49 && item.metadata?.saba?.['course-number'] === 'TALF-50'; });
3. 使用前端查询库(如Supabase、Prisma Client等)
这类工具通常有自己的嵌套查询语法,比如Supabase用->来指向嵌套属性:
const { data } = await supabase .from('your-table') .select('*') .eq('pk', 49) .eq('metadata->saba->course-number', 'TALF-50');
如果是其他库,查一下文档里关于嵌套字段查询的说明,重点注意带特殊字符的属性名是否需要额外转义。
总的来说,先修正拼写错误,再根据你的实际场景选择对应的写法,带连字符这类特殊字符的属性名,一定要避免直接用点语法访问。
内容的提问来源于stack exchange,提问作者Tiago Silva
相关产品推荐
相关产品推荐

