簡體   English   中英

相互依賴的graphQl類型

[英]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和擁有該SearchUser (在這種情況下,這根本沒有用)。

這是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 },
  },
});

不幸的是,這是行不通的,我猜是由於UserTypeSearchType之間的相互依賴性,並且出現了以下錯誤:

User.search field type must be Output Type but got: function type() {
  return _SearchType2.default;
}

有什么辦法可以實現UserSearch之間的這種相互依賴關系?

從此頁面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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM