gpt4 book ai didi

node.js - 我怎么使用 apollo combineResolvers() 错误?

转载 作者:行者123 更新时间:2023-12-05 06:56:29 24 4
gpt4 key购买 nike

我正在关注 Udemy course on apollo ,并且对 nodeJS 来说也是相当新的。到目前为止,本类(class)进展顺利,但在他们从 graphql-resolvers 模块引入 combineResolvers() 的步骤中,出现了问题。

它正在尝试使用 graphql-resolvers 模块中的 combineResolvers() 向解析器添加身份验证步骤。每个部分独立运行良好,这意味着 isAuthenticated() 本身运行良好,通过 user.id 获取用户的用户查询也运行良好。

当我使用 combineResolvers() 时,我得到一个 INTERNAL_SERVER_ERROR,“错误:无法为不可为 null 的字段 User.id 返回 null。”。此外,当我收到此错误时,来自 isAuthenticated() 的 console.log 会显示一封电子邮件,因此它应该返回/跳过,但是来自用户解析器的 console.log,在 users.find... 之前,是不是。他们之间如何失败?

这是相关代码。注释行是在引入 combineResolvers 之前有效的行:

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);
})
}
}

这是来自/resolvers/middleware/index.js 的 isAuthenticated 模块:

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;
}

最佳答案

您可以在导出前定义组合解析器(如在文档中,没有真正的改变,两种方法都应该有效)...

...但是您可能需要对数据库/数据源相关的解析器使用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???怎么测试的如何传递变量?

关于node.js - 我怎么使用 apollo combineResolvers() 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65125464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com