2016-10-25 7 views
0

私は常にエラーメッセージが表示されますので、私は私のGraphQLのAPIで、現時点ではstruggleingていますと、残念ながらそれが機能していない:GraphQL相互参照がエラーをスロー:フィールドタイプは、出力タイプであってもよいが持っている必要があります。[オブジェクトのオブジェクト]を

Error: Contact.other field type must be Output Type but got: [object Object]. 

私はまだGraphQL with express error : Query.example field type must be Output Type but got: [object Object]のようないくつかの記事と記事を読んでいますが、私の場合は答えが解決しないため、とにかく動作しません。あなたが私を助けたり、この問題を解決するためのヒントを与えてくれることを願っています。

ProfileType.js:

const graphql = require('graphql'); 
const ContactType = require('./ContactType'); 
const ObjectType = graphql.GraphQLObjectType; 
const List = graphql.GraphQLListType; 
const ID = graphql.GraphQLID; 
const NonNull = graphql.GraphQLNonNull; 

const ProfileType = new ObjectType({ 
    name: 'Profile', 
    fields: function() { 
    return { 
     id: {type: new NonNull(ID)}, 
     contacts: {type: new List(ContactType)}, 
    }; 
    }, 
}); 

module.exports = ProfileType; 

ContactType.js:

const graphql = require('graphql'); 
const ProfileType = require('./ProfileType'); 
const ObjectType = graphql.GraphQLObjectType; 
const EnumType = graphql.GraphQLEnumType; 

const ContactType = new ObjectType({ 
    name: 'Contact', 
    fields: function() { 
    return { 
     other: { 
     type: ProfileType 
     }, 
     status: { 
     type: new EnumType({ 
      values: { 
      REQUESTED: {value: 0}, 
      COMMITTED: {value: 1} 
      }, 
      name: 'ContactStatus' 
     }) 
     } 
    }; 
    }, 
}); 

module.exports = ContactType; 
+0

ContactTypeをProfileTypeとContactTypeをProfileTypeで使用しているのはなぜですか?矛盾した振る舞いを引き起こすべきではないでしょうか? – FabioCosta

+0

私は、通常の循環動作はGraphQLで動作するはずだと思いました。私は人がいくつかの他の人と接触していることをモデルにしたかった。それらの人はすべてプロフィールも持っているべきです。最後に、私はすべてを取得したいと思います。 1人の連絡先のすべてのidsと名前。これらのパラメータはProfileTypeの一部であり、余分なObjectTypeは不要です(冗長性は避けてください)。 GraphQLでは不可能な循環器はありますか? – CapCa

答えて

1

(OPに代わって投稿)私は以下の私のコードの主要部分を取り付けました。

は、フィールドの機能に必要なのObjectTypeを動かすことによってそれを解決:

const ContactType = new ObjectType({ 
    name: 'Contact', 
    fields: function() { 
    const ProfileType = require('./ProfileType'); 
    // ... 
    } 
}); 

そうでなければ、のObjectTypeは、真円度の問題を持っています。もちろん、ProfileTypeを使って同じことを行う必要があります。

関連する問題