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 함수를 적절하게 설정하는 방법을 모른다. 지금은 쿼리 실행을 사용할 때 생성 된 스키마가 인터페이스 또는 연합 유형을 실행에 사용할 수 없다는 오류가 표시됩니다. 이 스키마를 올바르게 실행하려면 어떻게해야합니까?GraphqlJS- 유형 충돌 - 공용체 또는 인터페이스를 사용할 수 없습니다.
임 오류가 이제 점점 :' "추상 형식의 사용자 정의가 해결해야 값 \ "[개체 개체] \"필드 Link.args에 대한 런타임에 개체 유형은 \ "널 \". "'나는'유형 Custom' 정의해야합니다을받은? 무엇을 포함해야합니까? – Brunhilda
나는 'One''와'Object.ofType ==='Two'''Object.ofType === 항상 'FALSE'이기 때문에 그것의 생각한다. 그래서 해결 된 타입은 항상 'null'입니다. 'args' 배열의 각 항목에'ofType' 필드를 추가하십시오 (resolvers.js의'linked' 상수). 아니면 대해서 typeof Object.second === 'string''와'Array.isArray (Object.second)''로 조건을 변경합니다. 지금 내 컴퓨터가 아니기 때문에 확인할 수 없습니다. – Bless
오 마이 하나님, 너를 사랑해. 나는 몇 주 동안 그것에 대해 생각해 왔고, 많은 사람들이 나를 도우려고 노력했다. 그리고 그 오랜 시간이 지난 후에 마침내 애송이가되었다. 너는 나의 구세주 야. 당신은 내가 얼마나 고맙게 여기에 있는지 모른다. – Brunhilda