Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GraphQL field of type graphql object within an array

I have a graphQL object defined here:

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 };

And then, I want to use this ProductType inside another GraphQL object, but I need that object to be an array structure, something like this:

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 };

Is this possible?

like image 817
CodeTrooper Avatar asked Dec 24 '22 09:12

CodeTrooper


1 Answers

You need to wrap your existing type using the GraphQLList wrapper, like so:

products: { type: new GraphQLList(ProductType) }
like image 56
Daniel Rearden Avatar answered Jan 05 '23 15:01

Daniel Rearden