如何将参数传递给 graphql 查询?
How to pass parameter to graphql query?
我正在尝试在 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.
});
但是,我不想在查询中硬编码 "Country"。我想将字符串传递到查询中,然后使用其他 location_type 获取数据。但是我找不到任何关于它的文章,而且 gql 语法只是阻止任何参数。
有谁有类似的经历,可以给点建议吗?
您可以使用 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.
});
我正在尝试在 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.
});
但是,我不想在查询中硬编码 "Country"。我想将字符串传递到查询中,然后使用其他 location_type 获取数据。但是我找不到任何关于它的文章,而且 gql 语法只是阻止任何参数。
有谁有类似的经历,可以给点建议吗?
您可以使用 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.
});