【问题标题】:GraphQL Subscriptions do not execute nested ResolversGraphQL 订阅不执行嵌套的解析器
【发布时间】:2023-04-01 17:10:02
【问题描述】:

有一个

  • 查询播放器
  • 订阅playerJoinedTable

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

PlayerType 具有属性 profile 和解析器:

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

当服务器被要求查询 player 时,它会返回 player 表中的两个字段和带有配置文件字段的 profile 对象。

但是在下面订阅时:

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

被执行,服务器只返回玩家的自己的字段而不执行配置文件的解析器。

输出:

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

【问题讨论】:

    标签: graphql graphql-js graphql-subscriptions


    【解决方案1】:

    奥斯卡!

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

    确保在将 db 传递给上下文之前服务器不会开始监听

    【讨论】:

    • 是的,我在 SubscriptionServer 的上下文中错过了db。谢谢!
    猜你喜欢
    • 2018-08-25
    • 2020-11-02
    • 1970-01-01
    • 2019-10-14
    • 2021-07-28
    • 2018-09-23
    • 2019-05-17
    • 2019-04-27
    • 2017-07-27
    相关资源
    最近更新 更多