我在nodejs中有一个graphql订阅,如下所示:
const resolvers = {
Query: () => { ... },
Mutation: () => { ... },
Subscription: {
commentAdded: {
subscribe: withFilter(
() => pubsub.asyncIterator('COMMENT_ADDED'),
(payload, variables) => {
return payload.commentAdded.repository_name === variables.repoFullName;
},
),
}
},
};
您可以看到此订阅使用的主题是COMMENT_ADDED
,这是一个硬编码的字符串。我想知道是否可以根据用户请求创建动态主题名称。
类似下面的代码。它以payload.id
作为后缀订阅主题。我该如何在apollo服务器中做到这一点?
subscribe: withFilter(
(payload) => pubsub.asyncIterator('COMMENT_ADDED:'+payload.id),
(payload, variables) => {
return payload.commentAdded.repository_name === variables.repoFullName;
},
),
答案 0 :(得分:0)
传递给withFilter
的第一个函数是subscribe
函数,它确定有效负载的值。因此无法将有效负载作为参数传递。该函数将传递四个参数,这些参数与任何根解析器相同-根值,字段的参数,上下文和GraphQLResolveInfo对象。