我有一个 graphql 查询,它获取了一个带有Client
对象的Meeting
对象:
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 中做到这一点吗?
所以问题是因为mongoose
.
当我从数据库中获取数据时,mongoose 会添加 client: {}
的空嵌入式子文档,即使数据库中的meeting
文档中没有这样的键(并且console.log(meeting)
没有显示此字段 - 只有console.log(meeting.client)
打印client: {}
(。
因此graphql
尝试返回所需的client
字段,因为client
并不像我想象的那样undefined
。