Graphql - 获取完整的子对象,如果不存在,则为 null



我有一个 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

相关内容

最新更新