我有一个graphql查询,它使用Meeting
对象获取Client
个对象:
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
中移除所需内容,那么当客户端为空时我也会使用
"client": {
"displayName": null
}
displayName
上的必需 - 只有在有客户的情况下。
有没有办法在graphql中做到这一点?
答案 0 :(得分:2)
所以问题是因为mongoose
。
当我从数据库中获取数据时,即使数据库中的client: {}
文档中没有这样的密钥,mongoose也会添加meeting
的空嵌入式子文档(和{{ 1}}不显示此字段 - 仅console.log(meeting)
打印console.log(meeting.client)
)。
因此client: {}
会尝试返回graphql
所需的字段,因为client
不是我想象的client
。