首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在模板文本GROQ查询中使用变量/占位符- @nuxtjs/sanity

在模板文本GROQ查询中使用变量/占位符- @nuxtjs/sanity
EN

Stack Overflow用户
提问于 2020-09-19 20:38:29
回答 1查看 670关注 0票数 1

我需要一个可重用的Nuxt组件,它从Sanity.io获取一些数据。我使用的是@nuxtjs/sanity包,所以查询如下:

代码语言:javascript
复制
import { groq } from '@nuxtjs/sanity'

const query = groq`*[_type == "article"][0].title`

export default {
  async fetch() {
    const result = await this.$sanity.fetch(query)
    this.title = result
  },
  data: () => ({ title: '' }),
}

但是,如果我尝试使用一个变量作为查询模板文本中的占位符(如建议的那样(${place夹子}),它将无法工作。

这不管用:

代码语言:javascript
复制
const placeholder = 'article'
const query = groq`*[_type == ${placeholder}][0].title`

编辑

在Sanity模块的Github存储库示例中,他们使用这些代码来实现我正在寻找的目标:

代码语言:javascript
复制
import Vue from 'vue'
import { groq } from '@nuxtjs/sanity'

const query = groq`*[_type == "movie" && slug.current == $slug][0] {
  title,
  releaseDate,
  castMembers[] {
    characterName
  },
  overview
}`

interface QueryResult {
  title: string
  releaseDate: string
  castMembers: Array<{ characterName: string }>
  overview: any[]
}

export default Vue.extend({
  components: {
    LocalSanityImage: SanityImage,
  },
  async fetch () {
    const movieDetails = await this.$sanity.another.fetch<QueryResult>(query, {
      slug: this.$route.params.slug,
    })
    this.details = movieDetails
  },
  data: () => ({ details: null as null | QueryResult }),
})

遗憾的是,这些解决方案没有出现在文档中。

他们为什么要进口Vue?这些参数与文档中的代码示例一起工作吗?

EN

回答 1

Stack Overflow用户

发布于 2020-09-19 20:38:29

感谢丹尼尔·罗伊的帮助。对于要作为变量读取的占位符,必须引用它,如下所示:

代码语言:javascript
复制
const placeholder = 'article'
const query = groq`*[_type == "${placeholder}"][0].title`
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63973212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档