2017-03-27 2 views
1

存在しない場合、私はClientオブジェクトとMeetingオブジェクトを取得graphqlクエリ持つフルサブオブジェクトを取得し、またはnull:Graphql -

type Meeting { 
    address: String! 
    client: Client 
} 
type Client { 
    displayName: String! 
} 

displayNameが必要ですが、clientはありません。 私は

{ 
    getMeeting(meetingId: "43bbea6ea0c6112b0abcf11d") { 
    address 
    client { 
     displayName 
    } 
    } 
} 

としてそれを問い合わせるだと、この会議は、クライアントを持っていない場合は、その後、私はエラーを取得しています:

Error: Cannot return null for non-nullable field Client.displayName. 

私はちょうどたいというクライアントが存在する場合、私は完全な詳細を得るでしょう。それがなければ、私はclient: nullを得るでしょう。私はdisplayNameから必要を削除する場合は、クライアントがnullのとき

が、それはまた、動作すると私は予想しましたように私は

"client": { "displayName": null }

を取得します。しかし、クライアントがある場合にのみ、私はまだdisplayNameで要求を実施する方法を探しています。

graphqlでこれを行う方法はありますか?

+0

クエリリゾルバはどのように見えますか? –

+0

あなたのコメントの後にリゾルバをもう一度チェックしましたが、それは問題ではありませんでしたが、実際の問題に遭遇するのを助けました。これはmogooseのためです。ありがとう! – yishaiz

答えて

1

したがって、問題はmongooseです。

私がDBからデータを取得していたとき、マングースはclient: {}の空の埋め込みサブドキュメントを追加し、そのようなDBでmeeting文書中のキー(およびconsole.log(meeting)がなくても、このフィールドは表示されません - のみconsole.log(meeting.client)プリントclient: {})。私が思ったようclientundefinedではないので、そのため

graphqlは、clientの必要なフィールドを返そうとします。