Different methods of querying data in Sanity.io and the use of read tokens to access private documents.
8 replies
Last updated: Jan 12, 2021
J
Hello! Is there any reason I would get different results between these two methods of querying data?
Any help appreciated!
curl <https://xuaf19yr.api.sanity.io/v1/data/query/production>\?query\=\*%5B_type%20%3D%3D%20%22articlePage%22%5D%20%7B%0A%09...%0A%7D
const sanity = require('@sanity/client') const sanityClient = sanity({ projectId: 'xuaf19yr', dataset: 'production', useCdn: false, }) await sanityClient.fetch(` *[_type == "articlePage"] { ... } `)
Jan 12, 2021, 10:01 AM
J
Actually, I do get the same result!
Jan 12, 2021, 10:04 AM
J
However, locally using "Vision" in Studio I'm getting the result I am expecting. I am probably missing something here.
Jan 12, 2021, 10:05 AM
P
What's the result you are not getting that you'd like to get?
If it's something like including
To set up a read token, go to your project on
manage.sanity.io , then to Settings and API. You should see an option there to add a new token. If you create a read token, you can then add it to the client configuration as follows:
If it's something like including
drafts.<id>documents in your results, this will require a read token as these documents are on a so-called non-root path (they have a
.in the ID) and therefore private even in a public dataset.
To set up a read token, go to your project on
manage.sanity.io , then to Settings and API. You should see an option there to add a new token. If you create a read token, you can then add it to the client configuration as follows:
const sanityClient = sanity({ projectId: 'xuaf19yr', dataset: 'production', token: '<SANITY_READ_TOKEN>' useCdn: false, })
Jan 12, 2021, 10:11 AM
J
Thank you for your reply
user M
! Using a token I'm getting the results I'm expecting!Jan 12, 2021, 10:12 AM
J
Very helpful and a huge load off my shoulders!
Jan 12, 2021, 10:12 AM
P
Glad to hear! Was there anywhere you checked in the documentation and expecting to find this information? Just in case we can make it more visible 🙂
Jan 12, 2021, 10:14 AM
J
I’m not sure to be honest, I encountered this while using the seemingly excellent https://github.com/LiamMartens/sanity-plugin-intl-input . The plugin namespaces translated documents using i18n.<id>, which explains the issue. Maybe it would be a good idea for the plugin author to mention this somewhere in the plugin documentation, I’ll mention it when closing the issue I opened regarding this.
Jan 12, 2021, 10:39 AM
H
Thanks Jacob, that's great feedback indeed. I think Liam (the plugin's author) is considering adding the option to either use non-root paths or the former notation that put the i18n info at the back of the ID without a
.. Feels like a good opportunity to add the note you suggested alongside the option itself 🙂
Jan 12, 2021, 10:46 AM
Sanity– build remarkable experiences at scale
Sanity is a modern headless CMS that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.