开发者问题收集

如何在 graphql 查询中添加动态参数

2019-08-26
2441

我想创建一个 GraphQL 查询,从我的 Vue 应用程序的数据字段中获取一些数据。但是,当我设置变量钩子并尝试使用 this.object 引用我需要的对象时,我得到了无法读取未定义的“xxx”的错误信息。

apollo: {
    question: {
      query: gql `
      query question($id: Int!) {
        question(id: $id){
          ...
        }
      }
`, variables: { id: this.presentQuestionId}
    }
  },

Uncaught TypeError: Cannot read property 'presentQuestionId' of undefined is the error message that keeps on coming up.

2个回答

variables 选项应该是一个返回对象的函数,例如:

variables(){
    return{
     id: this.presentQuestionId
   }
}
Boussadjra Brahim
2019-08-26

在纯 JS 中我有时会使用这个技巧:

const opts = {foo: 1, bar: 2}
const q = gql`
    query Query {
        getSomething(
            par1: ${opts.foo}
            ${!!opts.bar ? `, par2: ${opts.bar}` : ''}
        ) {
            id
            name
        }
    }
`

如果 par2 定义了它会添加到查询中。

Aleksandr Chernyi
2022-08-17