簡體   English   中英

如何在GraphQL解析器中訪問請求對象(使用Apollo-Server-Express)

[英]How to access the request object inside a GraphQL resolver (using Apollo-Server-Express)

我有一個使用GraphQL的標准快遞服務器

const server = express();

server.use('/graphql', bodyParser.json(), graphqlExpress({ schema }));

問題是:如何在解析器中訪問request對象? 我想在一些特定的查詢中檢查JWT

這是導入的架構:

const typeDefs = `
    type User {
        id: String,
        name: String,
        role: Int
    }
    type Query {
        user(id: String): User,
        users: [User]
    }
`;

const resolvers = {
    Query: {
        user: (_, args, context, info) => users.find(u => u.id === args.id),
        users: (_, args, context, info) => users
    }
}

module.exports = makeExecutableSchema({typeDefs, resolvers});

應通過上下文訪問請求對象。 您可以修改傳遞給graphqlExpress中間件的選項來定義您的上下文,如下所示:

server.use('/graphql', bodyParser.json(), graphqlExpress(req => ({
  schema,
  context: { user: req.user }
}))

我知道express-graphql實際上使用請求作為上下文,如果它沒有在選項中定義 - Apollo的中間件可能表現得很好但文檔不清楚。

最后,上下文可用作傳遞給解析器函數的第三個參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM