求助:Sanity client.fetch返回空数组,查询工具测试结果正常
解决Sanity client.fetch返回空数组但查询工具正常的问题
以下是几个常见的排查方向和解决办法:
核对客户端配置与查询工具的一致性
检查@/lib/sanity.client中的projectId、dataset参数,确保和你在Sanity查询工具里使用的完全一致。很多时候空数组问题是因为客户端连错了数据集(比如工具用production,客户端配置成development)。同时确认apiVersion使用的是最新的日期格式(如'2024-05-01'),旧版本可能存在兼容性问题。检查文档发布状态
Sanity查询工具默认会展示草稿和已发布的文档,但client.fetch默认只拉取已发布的内容。如果你的product文档还处于草稿状态,客户端自然拿不到数据。- 解决办法1:在Sanity Studio中将对应的
product文档发布。 - 解决办法2:如果需要拉取草稿内容,在fetch时添加参数:
const plans = await client.fetch(query, {}, { perspective: 'previewDrafts' });
- 解决办法1:在Sanity Studio中将对应的
简化查询排查隐性问题
先简化GROQ查询,去掉关联引用部分,测试基础查询是否能返回数据:const query = groq`*[_type=='product']`;如果这个查询能返回预期的2条数据,再逐步加回
..., categories[]->,排查是否是关联字段导致部分数据被过滤(比如某个product的categories字段为空或引用失效)。验证客户端权限配置
如果你的Sanity数据集设置了私有访问权限,需要在客户端配置中传入正确的token才能获取数据。检查sanity.client是否配置了有效的访问令牌,确保权限足够读取product类型的文档。
内容的提问来源于stack exchange,提问作者Omri Levy
相关产品推荐
相关产品推荐

