如何编写graphql的中间件,这将在每个parsing器之前调用

在每一个请求我发送令牌,并检查它在快递中间件

app.use(async (req, res, next) => { const authorization = req.headers.authorization; let token = null; let user; if (authorization) { try { token = jwt.verify(authorization, config.secret); } catch (e) { // dont work throw new GraphQLError({ message: 'token damaged' }); } if (token) { const { _id } = token; user = await User.findOne({ _id }); } if (user) { req.user = user; } } next(); }); 

令牌可能被损坏,我做检查:

 try { token = jwt.verify(authorization, config.secret); } catch (e) { throw new GraphQLError({ message: 'token damaged' }); } 

所以我需要发送到客户端应用程序快速错误,但它不工作,如预期的那样,是否有任何选项来创buildgraphql中间件在调用每个parsing器之前接受请求参数? 现在,如果我想抛出损坏的令牌错误,我需要在每个parsing器中写入检查?

您可以简单地回应并返回,而无需调用下一个中间件:

 try { token = jwt.verify(authorization, config.secret); } catch (e) { res.statusCode = 401; return res.end('{"errors": [{"message": "token damaged"}]}'); }