我对express-graphql
有疑问。
我试图在GraphQL解析器之后运行中间件。
这是我的前两次尝试:
app.use('/api', graphqlHTTP({
schema: graphqlSchema
})
);
app.use((req, res, next) => {
console.log('middleware called');
next();
});
和
app.use('/api', graphqlHTTP({
schema: graphqlSchema,
graphiql: true,
}), () => {
console.log('middleware called');
}
);
两者都不起作用。
我猜express-graphql
并未在某处调用next()
。
消息来源似乎证实了这一点:
type Middleware = (request: Request, response: Response) => void;
next
不是参数。
我尝试了这种解决方法:
app.use( (req, res, next) => {
req.on('end', () => {
console.log('middleware called');
});
next();
});
app.use('/api', graphqlHTTP({
schema: graphqlSchema
})
);
它有点工作。但是在实际使用中我注意到,在回调中尚未提供由突变改变的数据(即已经更新)。如果我将代码包装在setTimeout
内,则数据会更新。
结论:我如何在解析器之后运行中间件(或任何代码)?