在graphqlHTTP.Middleware

时间:2018-02-07 20:58:05

标签: express graphql middleware graphql-js express-graphql

我对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内,则数据会更新。

结论:我如何在解析器之后运行中间件(或任何代码)?

0 个答案:

没有答案