J'ai deux ressources: Purchase
et Category
où l'achat appartient à une catégorie et la catégorie a de nombreux achats. Je suis en train de permettre l'interrogation telles que:Numéro de référence circulaire de type graphql
query {
purchases {
description,
amount,
category {
name
}
}
}
ou
query {
categories {
name,
purchases {
description,
amount
}
}
}
Lors de la configuration de mes types, je reçois l'erreur suivante:
Schema must contain unique named types but contains multiple types named "Category".
Je suis sûr que ce est un problème de référence circulaire, mais j'ai utilisé des thunks comme je l'ai vu d'autres réponses suggèrent:
// Category/type.js
const {GraphQLObjectType, GraphQLInt, GraphQLString, GraphQLList} = require('graphql/type');
const {purchaseType} = require('../Purchase');
const categoryType = new GraphQLObjectType({
name: 'Category',
description: 'a purchasing category',
fields:() => ({
id: {
type: GraphQLInt
},
name: {
type: GraphQLString
},
purchases: {
type: new GraphQLList(purchaseType),
resolve (category) {
return category.getPurchases();
}
}
})
});
module.exports = categoryType;
// Category/index.js
const categoryType = require('./type');
const categoryQuery = require('./query');
module.exports = {
categoryType,
categoryQuery
};
// Purchase/type.js
const {GraphQLObjectType, GraphQLInt, GraphQLString, GraphQLFloat} = require('graphql/type');
const {categoryType} = require('../Category');
const purchaseType = new GraphQLObjectType({
name: 'Purchase',
description: 'a specific purchase',
fields:() => ({
id: {
type: GraphQLInt,
},
description: {
type: GraphQLString,
},
amount: {
type: GraphQLFloat,
},
category: {
type: categoryType,
resolve (purchase) {
return purchase.getCategory();
}
}
})
});
module.exports = purchaseType;
// Purchase/index.js
const purchaseType = require('./type');
const purchaseQuery = require('./query');
module.exports = {
purchaseType,
purchaseQuery
};
Ai-je dérangé quelque chose ici ou ce que j'essaie de faire n'est pas possible?
Edit # 1 Ce qui me porte à croire que c'est un problème de référence circulaire, est si je change le champ category
sur le purchaseType
à ce qui suit:
category: {
// type: categoryType,
// resolve (purchase) {
// return purchase.getCategory();
// }
type: GraphQLInt,
resolve (purchase) {
return 10;
}
}
et faire quelque chose de similaire à la categoryType
purchases
domaine, cela fonctionne correctement.
J'ai vérifié tous mes types et je n'ai qu'une seule fois 'category'. J'ai mis à jour ma question avec quelque chose que j'ai essayé. –