【问题标题】:Can't make search query work in Sanity CMS无法在 Sanity CMS 中进行搜索查询
【发布时间】:2019-01-07 15:37:34
【问题描述】:

我正在尝试使用 Sanity CMS 执行一个非常基本的搜索查询。 这就是我创建的 person 架构的样子:

export default {
  title: "Person",
  name: "person",
  type: "document",
  fields: [
    {
      title: "Name",
      name: "name",
      type: "string",
    }
  ]
}

我输入了两个不同的个人数据。 这就是我尝试获取数据的方式:

const client = sanityClient({
  projectId: 'siaj5ql4',
  dataset: 'production',
  useCdn: true
})

const query = '*[_type == "person"]'

client.fetch(query).then(person => {
  console.log(person)
})

但我在控制台中得到一个空数组:[] 没有错误或任何东西。 对这个简单的任务有什么想法吗?

【问题讨论】:

  • Sanity 命令行是调试此类问题的好工具。打开你的终端并 cd 到你的代码运行所在的文件夹。键入以下内容:sanity documents query '*[_type=="person"]'。有结果吗?
  • @thomax 是的,我愿意。我还在vision 上尝试了完全相同的查询,这是一个用于执行查询的健全插件,它还返回预期的数据。

标签: content-management-system sanity groq


【解决方案1】:

这有两个常见的原因:

  1. 数据集是私有的,客户端没有配置令牌。
  2. 您希望看到的文档未发布(草稿默认为私有)且客户端未配置令牌。

另请注意,CDN 不能与私有数据集和/或访问令牌一起使用。

【讨论】:

  • 你是对的,数据集是私有的,将其设置为公共解决了问题。当 CORS 来源仅限于特定 URL 时,将数据集设置为公开有什么缺点吗?
  • 很高兴它为您解决了这个问题!公开数据集意味着您数据集中的每个已发布文档都是公开可读的(CORS 仅在浏览器上下文中很重要,并且不限制任何人,例如抓取您的数据集以获取所有公开文档)。
猜你喜欢
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
相关资源
最近更新 更多