如何将参数传递给graphql查询?

Posted

技术标签:

【中文标题】如何将参数传递给graphql查询?【英文标题】:How to pass parameter to graphql query? 【发布时间】:2017-05-28 16:19:43 【问题描述】:

我正在尝试在 Meteor blaze 项目中使用 Apollo graphql。

我正在使用来自swydo:blaze-apollo 的包。 可以使用graphql查询从mongoDB获取数据。

// Using this one can get data
const LOCATION_COUNTRY_QUERY = gql`

    locations(location_type: "Country")
        location_id
        name
        iso_code
    

`;

Template.home.onCreated(function()
    const country = this.gqlQuery(query: LOCATION_COUNTRY_QUERY).get();
    console.log(country.locations); // Which will show an array list of country.
);

但是,我不想在查询中硬编码“国家/地区”。我想将字符串传递到查询中,然后使用其他 location_type 获取数据。但我找不到任何关于它的文章,而且 gql 语法只是阻止了任何参数。

谁有类似的经历,可以给点建议吗?

【问题讨论】:

【参考方案1】:

您可以使用 GraphQL 变量来完成这项工作。 首先,将变量声明为您的LOCATION_COUNTRY_QUERY

const LOCATION_COUNTRY_QUERY = gql`
query locationCountryQuery($locationType: String!)
    locations(location_type: $locationType)
        location_id
        name
        iso_code
    

`;

现在您可以为查询提供一个新的variables 选项:

Template.home.onCreated(function()
    const country = this.gqlQuery(query: LOCATION_COUNTRY_QUERY, variables: locationType: "Country").get();
    console.log(country.locations); // Which will show an array list of country.
); 

【讨论】:

以上是关于如何将参数传递给graphql查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何将参数传递给 GraphQL 中的子属性

Apollo Client Angular:如何将从查询中获得的数据作为参数传递给graphql中的另一个查询?

将枚举类型作为参数传递给 GraphQL 查询 - Quarkus

GraphQl 将查询参数传递给子类型

GraphQL 将参数传递给子解析

将参数传递给子节点解析器函数