Sanity查询始终返回空数组问题求助
排查Sanity查询返回空数组的方案
1. 确认数据集匹配
检查Sanity Studio中发布的两篇文章是否确实存在于production数据集——有时内容可能被误发布到development数据集,导致查询不到。
2. 关闭CDN缓存测试
你的客户端配置开启了useCdn: true,新发布的内容可能还未同步到CDN节点。临时将useCdn改为false再重新运行查询:
export default SanityClient({ projectId: "******", dataset: "production", useCdn: false, // 临时关闭CDN apiVersion: "2021-10-21", })
如果能查到数据,说明是CDN缓存延迟,等待一段时间后再开启CDN即可。
3. 检查文档发布状态
确保Sanity中的文章已经完成发布操作(不是停留在草稿状态)。草稿内容不会通过公共API或CDN返回,只有已发布的文档才能被查询到。
4. 验证查询语法
在Sanity Studio的「Vision」工具中直接执行查询*[_type == "post"],如果工具里能返回结果,说明查询语法没问题,问题出在客户端配置或权限;如果工具里也查不到,说明内容本身不存在或类型名写错(比如post是不是实际的文档类型)。
5. 检查数据集权限
进入Sanity管理后台的「Settings」→「API」页面,确认production数据集的权限设置为「Public access (read-only)」,否则公共API无法读取数据。
6. 更新API版本
尝试将apiVersion更新为较新的稳定版本(比如2024-05-01),避免旧版本API的兼容性问题:
export default SanityClient({ projectId: "******", dataset: "production", useCdn: true, apiVersion: "2024-05-01", // 更新为最新稳定版本 })
内容的提问来源于stack exchange,提问作者Mia loha.dev
相关产品推荐
相关产品推荐

