GraphQL。如何编写解析器
问题描述:
我刚开始进入GraphQL。我正在使用GraphQL.js并进行表达。现在我正在尝试构建一个简单的示例,使用硬编码的JSON作为我的JavaScript文件中的数据。然后,我想使用快递中间件通过卷曲或失眠来收听HTTP请求。在中间件中,我想使用body-parser来提取查询。现在我在解析器遇到问题。GraphQL。如何编写解析器
请看看我的代码。
var express = require('express');
var graphqlHTTP = require('express-graphql');
var { buildSchema, graphql } = require('graphql');
var bodyParser = require('body-parser');
var schema = buildSchema(`
type Product {
name: String!
price: Int!
}
type Query {
product(name: String): Product
}
`);
var products = {
'Mango': {
name: 'Mango',
price: 12,
},
'Apfel': {
name: 'Apfel',
price: 3,
},
};
resolvers = {
Query: {
product: (root, { name}) => {
return products[name];
},
},
};
var app = express();
app.use(bodyParser.text({ type: 'application/graphql' }));
app.post('/graphql', (req, res) => {
graphql(schema, req.body)
.then((result) => {
res.send(JSON.stringify(result, null, 2));
});
});
app.listen(4000);
这是行不通的。当我发布使用curl查询与
卷曲-XPOST -H “内容类型:应用程序/ graphql” -d “{产品(名称:\” APFEL \ “){名价格}}” http://localhost:4000/graphql
我得到响应{“data”。 {“product”:null}}。解析器不会被调用。我怎样才能正确地做到这一点?
答
你可以试试吗?
var resolvers = {
product: (args) => {
return products[args.name];
},
};
app.post('/graphql', (req, res) => {
graphql(schema, req.body, resolvers)
.then((result) => {
res.send(JSON.stringify(result, null, 2));
});
});
我认为这可以解决您的问题
谢谢!那就是诀窍。 –