有没有一种方法可以为apollo服务器添加预处理程序,以便从预处理程序中引发apollo将捕获并以apollo格式作为响应发送的错误?也许有帮助者格式化错误以进行响应?
我如何使用自定义getGqlErr帮助程序来做到这一点,它将获得现有错误或生成该错误:
onst apolloHandler = apolloServer.createHandler({ path: '/api/graphql' })
const apiHandler = async (req: NextApiRequest, res: NextApiResponse): Promise<void> => {
try {
await prehandler({ req, res } as Ctx)
} catch (e) {
res.setHeader('Content-Type', 'application/json')
res.end(
JSON.stringify({
errors: [
{
message: 'Prehandler Error',
extensions: {
langsMsg: getGqlErr(e),
code: 'prehandler custom error',
},
},
],
})
)
return
}
apolloHandler(req, res)
}
答案 0 :(得分:0)
可以在上下文函数中完成。
const apolloServer = new ApolloServer({
schema,
formatError: (err): any => {
console.log(err)
return err
},
async context(ctx: Ctx): Promise<Ctx> {
await prehandler(ctx)
return ctx
},
})