GraphQL订阅不执行嵌套的解析器

时间:2017-11-28 14:12:28

标签: graphql graphql-js graphql-subscriptions

有一个

  • 查询播放器
  • 订阅 playerJoinedTable

两者都应返回 PlayerType ,并且都接收带有 profileId 属性的对象。

PlayerType具有属性个人资料,包含解析程序:

profile: {
  type: ProfileType,
  resolve: (obj, args, {db}) => {
    return db.collection('profiles').findOne({_id: ObjectID(obj.profileId)})
  }
}

当要求服务器查询播放器时,它会返回播放器表格中的两个字段以及带有个人资料字段的个人资料对象。

但订阅时如下:

playerJoinedTable: {
  type: PlayerType,
  resolve: payload => payload,
  subscribe: () => pubsub.asyncIterator('playerJoinedTable')

执行后,服务器只返回玩家的自己的字段,而不执行个人资料的解析程序。

输出: enter image description here

知道订阅为什么不执行嵌套解析器?

1 个答案:

答案 0 :(得分:0)

奥斯卡!

您似乎在playerJoinedTable > profile解析器中遇到错误。 您似乎正试图访问collection上的db(我认为),但db未定义。

在将db传递给上下文之前,请确保服务器没有开始侦听