Graphql字段中的多个参数

Posted

技术标签:

【中文标题】Graphql字段中的多个参数【英文标题】:Graphql multiple arguments in field 【发布时间】:2019-03-08 15:25:37 【问题描述】:

我正在使用 GraphQL。 我可以在一个字段中传递一个参数。但我想知道如何将多个参数传递给一个字段。

这是我的代码: GraphlQL 对象类型:价格可用性

const priceAvailability = new GraphQLObjectType(
  name: "priceAvailability",
  description: "Check price and availability of article",
  fields: () => (
    articleID: 
      type: GraphQLString
    ,
    priceType:
      type:GraphQLString
    ,
    stockAvailability: 
      type: StockAvailabilityType,
      resolve(parentValue, args) 

        // stuff to get the price and availability
        return (data = getStockAvailability.getStockAvailability(
          parentValue.isbn, parentValue.omgeving
        ));
      
    
  )
);

根查询

const RootQuery = new GraphQLObjectType(
  name: "RootQuery",
  fields: () => (
    price: 
      type: new GraphQLList(priceAvailability),
      args: [
      articleID: 
          type: new GraphQLList(GraphQLString),
          description:
            'List with articles. Example: ["artid1","artid2"]'
        ,
        priceType: 
          type: new GraphQLList(GraphQLString) ,
          description:
            'PriceType. Example: "SalePrice","CurrentPrice"'
        ]
      ,
      resolve: function(_,  articleID , priceType) 
        var data = [];
        // code to return data here
        return data;
      
    
  )
);

架构

module.exports = new GraphQLSchema(
  query: RootQuery
);

这是我在 GraphiQL 中用来测试的查询:


  query: price(articleID:"ART03903", priceType:"SalePrice" )
        stockAvailability 
          QuantityAvailable24hrs
          QuantityAvailable48hrs
        
    

我可以通过 parentValue.articleID 获取 articleID,但在获取 parentValue.priceType 时遇到问题。

另外 GraphiQL 告诉我 priceType 不存在:

未知参数“priceType”。在“RootQuery”类型的“价格”字段上

【问题讨论】:

【参考方案1】:

args 字段采用对象而不是数组。试试:

args: 
  articleID: 
    type: new GraphQLList(GraphQLString),
    description: 'List with articles. Example: ["artid1","artid2"]'
  ,
  priceType: 
    type: new GraphQLList(GraphQLString) ,
    description: 'PriceType. Example: "SalePrice","CurrentPrice"'
  ,

【讨论】:

以上是关于Graphql字段中的多个参数的主要内容,如果未能解决你的问题,请参考以下文章

在graphql中,组合多个源中的字段共享一个共同值的多个源的最佳方法是啥?

GraphQL 不允许查询不同的字段

如何使用传递给Graphql字段的参数来转换JS中的结果?

Gatsbyjs 中的 GraphQL - 仅返回包含特定字段的数据

将多个参数传递给 GraphQL 查询

如何允许石墨烯GraphQl中的任何字段过滤