数组中 graphql 对象类型的 GraphQL 字段
GraphQL field of type graphql object within an array
我在这里定义了一个 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 };
这可能吗?
您需要使用 GraphQLList 包装器来包装您现有的类型,如下所示:
products: { type: new GraphQLList(ProductType) }
我在这里定义了一个 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 };
这可能吗?
您需要使用 GraphQLList 包装器来包装您现有的类型,如下所示:
products: { type: new GraphQLList(ProductType) }