数组中类型为 graphql 对象的 GraphQL 字段

Posted

技术标签:

【中文标题】数组中类型为 graphql 对象的 GraphQL 字段【英文标题】:GraphQL field of type graphql object within an array 【发布时间】:2018-08-15 02:04:30 【问题描述】:

我在这里定义了一个 graphQL 对象:

const graphql = require('graphql');
const  GraphQLObjectType  = require('graphql');

const ProductType = new GraphQLObjectType(
    name: 'Product',
    description: 'Product GraphQL Object Schemal Model',
    fields: 
        productId:  type: graphql.GraphQLString ,
        SKU:  type: graphql.GraphQLString ,
        quantity:  type: graphql.GraphQLFloat ,
        unitaryPrice:   type: graphql.GraphQLFloat ,
        subTotal:  type: graphql.GraphQLFloat ,
        discount:  type: graphql.GraphQLFloat ,
        totalBeforeTax:  type: graphql.GraphQLFloat ,
        isTaxAplicable:  type: graphql.GraphQLBoolean ,
        unitaryTax:  type: graphql.GraphQLFloat ,
        totalTax:  type: graphql.GraphQLFloat 
    
);

module.exports.ProductType =  ProductType ;

然后,我想在另一个 GraphQL 对象中使用此 ProductType,但我需要该对象是一个数组结构,如下所示:

const graphql = require('graphql');
const  GraphQLObjectType  = require('graphql');

const  ProductType  = require('./product');

const ShoppingCartType = new GraphQLObjectType(
    name: 'ShoppingCart',
    description: 'Shopping Cart GraphQL Object Schema Model',
    fields: 
        cartId:  type: graphql.GraphQLString ,
        userId:  type: graphql.GraphQLString ,
        products: [ type: ProductType ]
    
);

module.exports.ShoppingCartType =  ShoppingCartType ;

这可能吗?

【问题讨论】:

【参考方案1】:

您需要使用 GraphQLList 包装器来包装现有类型,如下所示:

products:  type: new GraphQLList(ProductType) 

【讨论】:

以上是关于数组中类型为 graphql 对象的 GraphQL 字段的主要内容,如果未能解决你的问题,请参考以下文章

Apollo GraphQL:用于查询返回不同类型对象的模式?

我们如何从 GraphQL 的 RequestContextHolder 获取 GraphQL 的 HttpServletRequest(DefaultGlobalContext)(使用 graphq

在 GraphQL 对象查询中使用变量

如何在我的 GraphQL 中为对象中的对象列表定义类型

如何在我的GraphQL中为对象中的对象列表定义类型

带有官方 Graphql 教程的“无法在 CreateUser 类型上查询字段 'id'”