Simeon Griggs
Customer Education at Sanity
Not all Unpublished Documents are created equal
{
"unpublishedAll": *[_id in path("drafts.**")],
"unpublishedNew": *[_id in path("drafts.**") && count(*[^._id == "drafts." + _id]) == 0],
"unpublishedModified": *[count(*[_id in [^._id, "drafts." + ^._id]]) > 1]
}
Draft / Unpublished Documents can be queried by looking for any Document which has an _id
that begins with drafts.
but determining if the Document has ever been Published before requires more work.
An existing, previously published Document with unpublished changes will exist as two Documents that can be returned by an authenticated query, their _id
's look something like:
asdf-1234
drafts.asdf-1234
However, a new Document that has never been published will only exist with an _id
that begins with drafts.
When this snippet is run, the number of results in unpublishedAll
should equal the sum of the results in unpublishedNew
and unpublishedModified
.
Note: These example queries are not optimised and are intended for use cases like document lists for your Dashboard.
The three query keys explained:
unpublishedAll
will return all Documents with an _id
beginning with drafts.
unpublishedNew
does the same search but only returns Documents for which it can also find Published _id
's.unpublishedModified
finds as many Documents where both a published and draft _id
for the same document exist.Customer Education at Sanity
Runs Support @ Sanity.io
This snippet can be used to fetch current, previous and next articles based on publication date and related tags.
Go to Get current, previous and next post, filtered by tagsUses @sanity/asset-utils to validate an uploaded image by its ID
Go to Schema validation rules to enforce image size or file typeGet details of the currently logged in Sanity user
Go to useCurrentUser Custom React Hook