10

本文の一部にデコードする必要がある JWT が含まれているため、現在、リクエスト本文をコンテキストに取得しようとしています。ただし、次のことを試みると、コンテキストが未定義になります。

    app.use('/', graphqlHTTP((req) => ({
      schema: Schema,
      context: req.body,
      pretty: true,
      graphiql: false
    })));

req からログアウトしましたが、そこに body が表示されませんでした。私はreact-reachというライブラリを使用しています。リクエストの本文に以下を追加します。

    {
      query: {...},
      queryParams: {...},
      options: {
       token: '...' // <-- I'm passing the token into options
      }
    }

本文にあるクエリ/ミューテーションが解釈され実行されているため、本文が解釈されていることがわかります。コンテキストに渡されたときにそれを見つけることができないようです。

4

1 に答える 1

8

追加の body-parser ミドルウェアを使用していない限り、あなたreq.bodyはそうです。undefinedExpressのドキュメントから:

必須ボディ

リクエスト本文で送信されたデータのキーと値のペアが含まれます。デフォルトでは未定義であり、body-parser や multer などの本文解析ミドルウェアを使用すると入力されます。 http://expressjs.com/en/api.html#req.body

graphqlHTTPリクエスト本文を解析するのは独自のことです(こちらを参照)。それがクエリ/ミューテーションが機能している理由です。

ミドルウェア (body-parser や multer など) を追加してリクエスト本文を解析するreq.bodyと、それが利用可能になり、探しているものがコンテキストに入力されます。

于 2016-10-06T12:36:44.987 に答える