Apollo GraphQL: изменение полезной нагрузки при использовании withFilter? - PullRequest
1 голос
/ 26 мая 2020

У меня есть рабочая подписка, в которой используется withFilter:

   User_Presence_Subscription: {
        subscribe: withFilter(
            () => pubsub.asyncIterator(USER_PRESENCE_UPDATED_CHANNEL),
            (payload, args, context) => {
                if (typeof (payload) === 'undefined') {
                    return false;
                }
                const localUserId = (typeof(context) == 'undefined' || typeof(context.userId) == 'undefined') ? null : context.userId;
                const ids_to_watch = args.ids_to_watch;
                const usersWithUpdatedPresence = payload.User_Presence_Subscription;

                let result = false;
                console.log("User_Presence_Subscription - args == ", args, result);
                return result;
            }
        )
    }

. Я хотел бы изменить полезные данные перед отправкой их клиенту. Я попытался добавить resolve функцию , как показано в документах :

   User_Presence_Subscription: {
        resolve: (payload, args, context) => {
            debugger; <== NEVER ACTIVATES
            return {
                User_Presence_Subscription: payload,
            };
        },
        subscribe: withFilter(
            () => pubsub.asyncIterator(USER_PRESENCE_UPDATED_CHANNEL),
            (payload, args, context) => {
                if (typeof (payload) === 'undefined') {
                    return false;
                }
                const localUserId = (typeof(context) == 'undefined' || typeof(context.userId) == 'undefined') ? null : context.userId;
                const ids_to_watch = args.ids_to_watch;
                const usersWithUpdatedPresence = payload.User_Presence_Subscription;

                let result = false;
                console.log("User_Presence_Subscription - args == ", args, result);
                return result;
            }
        )
    }

... но строка debugger в функции resolve никогда не попадает.

Какой правильный синтаксис здесь использовать?

1 Ответ

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

Решено. Единственная причина, по которой распознаватель не сработал, заключалась в том, что в моем тестовом коде я возвращал false из функции withFilter. Когда он возвращает true, распознаватель попадает, как и ожидалось.

...