You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS GraphQL登出Mutation返回上下文问题:如何仅返回布尔值?

问题解决:GraphQL Logout Mutation 返回布尔值而非上下文内容

问题原因

context.session.destroy() 是异步方法,它的返回值并非回调函数里的 true/false,而是当前的 session 对象。这就导致 GraphQL 收到了非布尔类型的返回值,触发类型不匹配错误。

修复方案

将异步的 destroy 操作包装成 Promise,让 resolver 返回一个 Promise,在回调中根据结果 resolve 对应的布尔值:

export default {
  Mutation: {
    logout: {
      resolve(parent, args, context) {
        return new Promise((resolve, reject) => {
          context.session.destroy(error => {
            if (error) {
              log.info('Logging out: could not destroy the session');
              log.error(error);
              resolve(false); // 出错时返回false
            } else {
              console.log('HELLO LOGOUT');
              log.info('Logged out: session destroyed.');
              resolve(true); // 成功销毁返回true
            }
          });
        });
      },
    },
  },
};

解释

  • 通过 Promise 封装异步操作,确保 resolver 返回的是符合 GraphQL 类型定义的布尔值。
  • 在 destroy 的回调中,使用 resolve() 来传递最终的布尔结果,而不是直接 return(因为回调的 return 值不会被 resolver 捕获)。

内容的提问来源于stack exchange,提问作者Jakub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 13:57:03