Как я могу подписаться на Dynami c Topi c в graphql? - PullRequest
0 голосов
/ 29 мая 2020

У меня есть подписка на graphql в nodejs, как показано ниже:

const resolvers = {
    Query: () => { ... },
    Mutation: () => { ... },
    Subscription: {
        commentAdded: {
          subscribe: withFilter(
            () => pubsub.asyncIterator('COMMENT_ADDED'),
            (payload, variables) => {
             return payload.commentAdded.repository_name === variables.repoFullName;
            },
          ),
        }
    },
};

Вы можете видеть, что эта подписка использует topi c COMMENT_ADDED, который является жестко закодированной строкой. Мне интересно, могу ли я создать имя Dynami c topi c на основе запроса пользователя.

Что-то вроде кода ниже. Он подписывается на topi c с суффиксом payload.id. Как я могу сделать это на сервере apollo?

subscribe: withFilter(
            (payload) => pubsub.asyncIterator('COMMENT_ADDED:'+payload.id),
            (payload, variables) => {
             return payload.commentAdded.repository_name === variables.repoFullName;
            },
          ),

1 Ответ

0 голосов
/ 29 мая 2020

Первая функция, переданная в withFilter, - это функция subscribe, которая определяет значение полезной нагрузки. Поэтому полезную нагрузку нельзя передать в качестве параметра. В функцию передается четыре параметра, как и любому преобразователю root: значение root, аргументы поля, контекст и объект GraphQLResolveInfo.

...