2016-05-19 19 views
5

Tôi hiện đang cố gắng đưa nội dung yêu cầu vào ngữ cảnh, vì một phần nội dung chứa JWT cần được giải mã. Tuy nhiên, khi tôi thử những điều sau, tôi nhận được không xác định cho ngữ cảnh:Cách chuyển nội dung yêu cầu vào Ngữ cảnh GraphQL?

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

Tôi đã đăng xuất lại và tôi không thấy cơ thể ở đó. Tôi đang sử dụng một thư viện gọi react-reach, nó bổ sung thêm dòng sau vào cơ thể theo yêu cầu:

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

Tôi biết cơ thể đang được giải thích vì truy vấn của tôi/đột biến có trong cơ thể đang được giải thích và thực thi. Có vẻ như không thể tìm thấy nó khi được chuyển đến ngữ cảnh.

+2

Tôi cảm thấy dễ dàng hơn nhiều nếu bạn đặt mã thông báo vào tiêu đề, sau đó bạn có thể thực hiện như sau: http://docs.apollostack.com/apollo-server/tools.html#auth-tokens (Máy chủ Apollo chỉ là một wrapper mỏng xung quanh Express-GraphQL) – stubailo

+0

Hãy thử điều đó, @stubailo –

+0

Điều đó đã làm việc @stubailo –

Trả lời

2

req.body của bạn là undefined trừ khi bạn đang sử dụng phần mềm trung gian phân tích cú pháp nội dung bổ sung. Từ các tài liệu Express:

req.body

Có cặp khóa-giá trị của dữ liệu gửi trong cơ thể theo yêu cầu. Theo mặc định, nó không xác định và được điền khi bạn sử dụng phần mềm trung gian phân tích cú pháp nội dung, chẳng hạn như trình phân tích cú pháp và trình phân tích cú pháp. http://expressjs.com/en/api.html#req.body

graphqlHTTP đang làm điều riêng của nó để phân tích cơ thể theo yêu cầu (xem here) và đó là lý do tại sao các truy vấn của bạn/đột biến đang làm việc.

Thêm phần mềm trung gian (như phân tích cú pháp cơ thể hoặc multer) để phân tích cú pháp nội dung yêu cầu sẽ hiển thị trên req.body và ngữ cảnh của bạn sẽ trở nên phổ biến với những gì bạn đang tìm kiếm.

Các vấn đề liên quan