私は2つのリソースを持っています:Purchase
とCategory
ここで購入はカテゴリに属し、カテゴリには多くの購入があります。私は、このかなり確信しているタイプ循環参照の問題graphql
Schema must contain unique named types but contains multiple types named "Category".
:私のタイプを設定するとき、私は次のエラーを取得する
query {
purchases {
description,
amount,
category {
name
}
}
}
または
query {
categories {
name,
purchases {
description,
amount
}
}
}
:私は、次のようなクエリを実行できるようにしようとしています循環参照問題ですが、私は他の答えが示唆しているように私はサンクを使用しました:
// 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
};
私はここで何かを台無しにしたのですか、それとも私ができないことをしようとしていますか?これは、循環参照の問題であると信じて私をリード何
編集#1 、私は次のようにフィールドpurchaseType
にcategory
を変更した場合である:
category: {
// type: categoryType,
// resolve (purchase) {
// return purchase.getCategory();
// }
type: GraphQLInt,
resolve (purchase) {
return 10;
}
}
とcategoryType
に似た何かをしますpurchases
フィールドは正常に動作します。
私はすべてのタイプをチェックしましたが、私は 'category'しか一度しか持っていません。私は何か試して私の質問を更新しました。 –