[英]interdependent graphQl types
我想設計一個其中兩個類型相互依賴的graphQl模式。 基本上我有一個數據庫結構,其中:
User.hasOne(Search)
我希望能夠像這樣進行graphQl查詢:
// note that 'me' has User type
// search has Search type
query{
me{
email,
search{
content,
user{
id
}
}
}
}
因此,您看到我們請求一個User
,它的Search
和擁有該Search
的User
(在這種情況下,這根本沒有用)。
這是UserType
的定義:
import {
GraphQLObjectType as ObjectType,
GraphQLID as ID,
GraphQLString as StringType,
GraphQLNonNull as NonNull,
GraphQLInt as IntType,
} from 'graphql';
const UserType = new ObjectType({
name: 'User',
fields: {
id: { type: new NonNull(ID) },
username: { type: StringType },
search: {
type: SearchType,
resolve(user){
return user.getSearch();
}
},
},
});
這是我對SearchType
定義:
const SearchType = new ObjectType({
name: 'Search',
fields: {
id: { type: new NonNull(ID) },
user: {
type: UserType,
resolve(search){
return search.getUser();
}
},
content: { type: StringType },
},
});
不幸的是,這是行不通的,我猜是由於UserType
和SearchType
之間的相互依賴性,並且出現了以下錯誤:
User.search field type must be Output Type but got: function type() {
return _SearchType2.default;
}
有什么辦法可以實現User
和Search
之間的這種相互依賴關系?
從此頁面http://graphql.org/graphql-js/type/#graphqlobjecttype看到PersonType如何依賴於自身?
var PersonType = new GraphQLObjectType({
name: 'Person',
fields: () => ({
name: { type: GraphQLString },
bestFriend: { type: PersonType },
})
});
您正在尋找的是
fields: () => ({
...
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.