[英]Error: Body must be a string. Received: { resolvers: [[function HelloResolver]], validate: false } when using Type-graphql and 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.