阿波罗GraphQL。使用withFilter时修改有效载荷?

问题描述 投票:1回答:1

我有一个工作的订阅,它使用 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 函数永远不会被击中。

这里正确的语法是什么?

graphql apollo apollo-server
1个回答
0
投票

解决了。解析器没有被击中的唯一原因是,在我的测试代码中,我返回了 false 来自 withFilter 函数。当它返回 true 解析器如期被击中。

© www.soinside.com 2019 - 2024. All rights reserved.