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

求助: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' });
      
  • 简化查询排查隐性问题
    先简化GROQ查询,去掉关联引用部分,测试基础查询是否能返回数据:

    const query = groq`*[_type=='product']`;
    

    如果这个查询能返回预期的2条数据,再逐步加回..., categories[]->,排查是否是关联字段导致部分数据被过滤(比如某个product的categories字段为空或引用失效)。

  • 验证客户端权限配置
    如果你的Sanity数据集设置了私有访问权限,需要在客户端配置中传入正确的token才能获取数据。检查sanity.client是否配置了有效的访问令牌,确保权限足够读取product类型的文档。

内容的提问来源于stack exchange,提问作者Omri Levy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:09:26