当前位置: 首页 > 知识库问答 >
问题:

我使用apollo CommineResolvers()是怎么错的?

丁雅逸
2023-03-14

以下是相关代码。注释的行是在引入ComminereSolvers之前有效的行:

const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const { combineResolvers } = require('graphql-resolvers');

const { users, tasks } = require('../constants');
const User = require('../database/models/user');
const { isAuthenticated } = require('./middleware');

module.exports = {
    Query: {
        users: () => {
            return users;
        }, 
        // user: ( _, args, { email }) => {
        //     console.log("===", email);
        //     return users.find(user => user.id == args.id);
        // }
        user: combineResolvers(isAuthenticated, ( _, { id }, { email }) => {
            console.log("===", email);
            return users.find(user => user.id == id);
        })
    }
}

下面是isAuthenticated模块,来自/resolvers/middleware/index.js:

const skip = require('graphql-resolvers');

module.exports.isAuthenticated = (_, __, { email }) => {
    console.log("isAuthenticated...email : ", email);
    if (!email) {
        throw new Error("Access Denied! Please login to continue");
    }
    return skip;
}

共有1个答案

秋飞鸾
2023-03-14

您可以在导出之前定义组合解析器(就像在文档中一样,没有真正的变化,两种方法都应该工作)...

...但是您可能需要对DB/DataSource相关的解析器使用Async/await

const authedUserById = combineResolvers(
  isAuthenticated, 
  async ( _, { id }, { email }) => {
        console.log("==>>", id, email);
        return await users.find(user => user.id == id);
  }
)

module.exports = {
  Query: {
    users: () => {
        return users;
    }, 
    user: authedUserById
  }
}

记录了什么ID???怎么测试的?如何传递变量?

 类似资料:
  • 问题内容: 我试图在网上找到答案,但是找不到特定于实现的答案。 我可以选择,并进行了大量的业务,我想知道我怎么可以在它们之间进行选择? 我已阅读文档的onComplete和的onSuccess,但我可以从火力地堡文档,看这一个,例如,对于(如一个具体操作的示例操作),他们有时用,有时他们使用。 我怎么知道每种情况下哪个更好?有关系吗?考虑到我想知道每个操作是否成功。 问题答案: 顾名思义,将在任务

  • 本文向大家介绍requestAnimationFrame,请问是怎么使用的?相关面试题,主要包含被问及requestAnimationFrame,请问是怎么使用的?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: requestAnimationFrame() 方法告诉浏览器您希望执行动画并请求浏览器在下一次重绘之前调用指定的函数来更新动画。该方法使用一个回调函数作为参数,这个回调函数会在浏

  • 问题内容: 一个ajax请求返回一个标准的JSON数组,其中填充了用户的输入。输入已经过清理,使用eval()函数,我可以轻松创建javascript对象并更新页面。 这就是问题所在。无论我多么努力清理输入,我都不想使用eval()函数。我已经检查了谷歌的方法来使用“没有eval的AJAX中的JSON”,并且遇到了很多不同的方法… 我应该使用哪一个?有没有一种标准的,经过验证的安全方法来做到这一点

  • 问题内容: 有人可以发现我的错误吗,这应该是SQL中的合法查询吗? ON子句中的未知列u.usr_auto_key 这是数据库模式: 这是查询… 问题答案: 尝试切换,并在from子句中:

  • 问题内容: 我用Java写了一个servlet,我想知道对该servlet的请求是使用HTTP还是HTTPS执行的。 我以为可以使用,但是两种方法都返回HTTP / 1.1。 有任何想法吗? 问题答案: *_答案是 _ *HttpSerlvetRequest.isSecure() 。在以下情况下,ServletContainer负责返回true: ServletContainer本身是否可以接受h

  • Jenkins有600个插件,在实际系统中,我们用来安装大量的插件。 有时,我们想删除一些插件,使系统更干净,或者用另一个成熟的插件(不同的名称)替换。 这需要确保没有人/没有工作使用这些插件,或者我需要通知他们。 在Jenkins系统的配置或某处是否有任何方法可以知道插件是否被任何作业使用? 更新2013基于下面的答案,我维护简单的“plugin:keyword”映射,如 并从中搜索插件关键字,