获取文件
Fetching documents
我使用 Sanity Studio 在一个简单的模式“用户”(结构并不那么重要)中创建了 2 个文档,然后用一些值更新了每个文档,并发布了。
正在尝试使用查询获取结果:
*[_type=="users"]
我得到了 4 个,而不是 2 个文档,而且似乎每次更新都创建了一个新的修订版,并且所有文档的所有修订版都被返回了。
Sanity 的编辑每次都是这样吗?如果是这样,我如何才能获得包含所有最新更改的 2 个文档?
听起来您可能同时获得了每个文档的发布版本和草稿版本。草稿将与已发布的文档具有相同的 _id
,但将以 drafts.
.
作为前缀
如果您将查询修改为以下内容,这可能会更清楚一些,这将 return 一个 _id
s:
的数组
*[_type=="users"]._id
如果确实如此,您可以修改查询以排除草稿:
*[_type=="users" && !(_id in path("drafts.**"))]
这里还有一些 detail about drafts。
@Geoff 的回答是正确的,但是如果有人一开始就不关心跟踪草稿(我的情况),我找到了一种更好的方法来做到这一点。您可以指定一个
liveEdit: true
架构类型上的标志,在这种情况下根本不会跟踪此类型的草稿
我使用 Sanity Studio 在一个简单的模式“用户”(结构并不那么重要)中创建了 2 个文档,然后用一些值更新了每个文档,并发布了。
正在尝试使用查询获取结果:
*[_type=="users"]
我得到了 4 个,而不是 2 个文档,而且似乎每次更新都创建了一个新的修订版,并且所有文档的所有修订版都被返回了。
Sanity 的编辑每次都是这样吗?如果是这样,我如何才能获得包含所有最新更改的 2 个文档?
听起来您可能同时获得了每个文档的发布版本和草稿版本。草稿将与已发布的文档具有相同的 _id
,但将以 drafts.
.
如果您将查询修改为以下内容,这可能会更清楚一些,这将 return 一个 _id
s:
*[_type=="users"]._id
如果确实如此,您可以修改查询以排除草稿:
*[_type=="users" && !(_id in path("drafts.**"))]
这里还有一些 detail about drafts。
@Geoff 的回答是正确的,但是如果有人一开始就不关心跟踪草稿(我的情况),我找到了一种更好的方法来做到这一点。您可以指定一个
liveEdit: true
架构类型上的标志,在这种情况下根本不会跟踪此类型的草稿