const {
makeExecutableSchema
} = require('graphql-tools');
const resolvers = require('./resolvers');
const typeDefs = `
type Link {
args: [Custom]
}
union Custom = One | Two
type One {
first: String
second: String
}
type Two {
first: String
second: [String]
}
type Query {
allLinks: [Link]!
}
`;
const ResolverMap = {
Query: {
__resolveType(Object, info) {
console.log(Object);
if (Object.ofType === 'One') {
return 'One'
}
if (Object.ofType === 'Two') {
return 'Two'
}
return null;
}
},
};
// Generate the schema object from your types definition.
module.exports = makeExecutableSchema({
typeDefs,
resolvers,
ResolverMap
});
//~~~~~resolver.js
const links = [
{
"args": [
{
"first": "description",
"second": "<p>Some description here</p>"
},
{
"first": "category_id",
"second": [
"2",
"3",
]
}
]
}
];
module.exports = {
Query: {
//set data to Query
allLinks:() => links,
},
};
graphqlのドキュメンタリーが非常に悪いので混乱します。私は、どのようにプロパティや関数をスキーマ内で使用できるようにするためにresolveMap関数を適切に設定するか分かりません。現時点では、クエリの実行を使用しているときに、生成されたスキーマでInterfaceまたはUnionの型を実行できないというエラーが表示されます。このスキーマを適切に実行するにはどうすればよいですか?GraphqlJS-タイプの競合 - 共用体またはインタフェースを使用できません
イムは今、エラーを取得します実行時に、Link.argsフィールドの値が\ "[Object Object] \"で、\ "null \"を受け取ったオブジェクトタイプ。 "'カスタムタイプを定義する必要がありますか?何を含めるべきか? – Brunhilda
'Object.ofType === 'One''と' Object.ofType ===' Two''は常に 'false'ですからです。だから解決された型は常に 'null'です。 'args'配列の各項目に' ofType'フィールドを追加してみてください( 'resolvers.js'の' links'定数)。条件を 'typeof Object.second === 'string''と' Array.isArray(Object.second) 'に変更してください。私は今私のコンピュータではないので、私は確認できません。 – Bless
オハイオ州神よ、あなた、私はあなたを愛しています。私は数週間それについて考えている、人々の束が私を助けようとしたし、その長い時間の後、最終的にアスワーがあります。あなたは私の救い主です。あなたは今、どれくらい感謝しているのか分かりません。 – Brunhilda