GraphQL 订阅不执行嵌套解析器
GraphQL Subscriptions do not execute nested Resolvers
有一个
- 查询玩家和
- 订阅 playerJoinedTable.
两者都应该 return PlayerType 并且都接收带有 属性 profileId.
的对象
PlayerType 有 属性 配置文件 解析器:
profile: {
type: ProfileType,
resolve: (obj, args, {db}) => {
return db.collection('profiles').findOne({_id: ObjectID(obj.profileId)})
}
}
当服务器被要求查询玩家时,它return来自玩家table和个人资料的两个字段具有配置文件字段的对象。
但以下订阅时:
playerJoinedTable: {
type: PlayerType,
resolve: payload => payload,
subscribe: () => pubsub.asyncIterator('playerJoinedTable')
被执行,服务器return只玩家自己的字段而不执行个人资料的解析器。
输出:
知道为什么订阅不执行嵌套解析器吗?
奥斯卡!
您的 playerJoinedTable > profile
解析器似乎有错误。
似乎您正在尝试访问 db
上的 collection
(我认为),但 db
未定义。
确保在将 db
传递给上下文
之前服务器没有开始侦听
有一个
- 查询玩家和
- 订阅 playerJoinedTable.
两者都应该 return PlayerType 并且都接收带有 属性 profileId.
的对象PlayerType 有 属性 配置文件 解析器:
profile: {
type: ProfileType,
resolve: (obj, args, {db}) => {
return db.collection('profiles').findOne({_id: ObjectID(obj.profileId)})
}
}
当服务器被要求查询玩家时,它return来自玩家table和个人资料的两个字段具有配置文件字段的对象。
但以下订阅时:
playerJoinedTable: {
type: PlayerType,
resolve: payload => payload,
subscribe: () => pubsub.asyncIterator('playerJoinedTable')
被执行,服务器return只玩家自己的字段而不执行个人资料的解析器。
输出:
知道为什么订阅不执行嵌套解析器吗?
奥斯卡!
您的 playerJoinedTable > profile
解析器似乎有错误。
似乎您正在尝试访问 db
上的 collection
(我认为),但 db
未定义。
确保在将 db
传递给上下文