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

Sanity查询users文档返回历史修订 如何获取最新发布文档

Sanity查询返回多余修订版本问题解答

版本机制说明

Sanity默认不会在更新发布时覆盖原有文档,所有编辑、发布操作都会生成新的文档快照留存,这些快照确实可以被无过滤条件的GROQ查询命中。
不同版本的文档靠内置_id字段做区分:

  • 正式发布的最新版本文档:_id无特殊前缀,为文档的正式ID
  • 草稿、历史修订版本文档:_id统一带有drafts.前缀,你查询得到的4条结果里,多余的2条就是这部分带前缀的修订/草稿记录。

正确查询写法

只需要在查询条件中增加过滤规则,排除所有带drafts.前缀的文档,即可拿到最新的正式发布结果,调整后的查询语句如下:

*[_type == "users" && !(_id in path("drafts.**"))]

语句说明:

  • path("drafts.**")会匹配所有_id以drafts.开头的草稿、修订文档
  • 前置!为取反逻辑,排除上述匹配到的非正式发布文档
    执行上述语句后,就会返回你预期的2条最新已发布users文档。

补充说明:如果后续业务场景需要拉取未发布的草稿内容做预览、版本对比,再移除这个过滤条件即可;面向线上用户的正式数据查询,默认都建议加上该过滤规则,避免泄露未发布的编辑内容。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.05 16:15:46