我刚开始进入GraphQL。我正在使用GraphQL.js和express。现在我正在尝试使用硬编码的JSON作为我的javascript文件中的数据构建一个简单的示例。然后,我想使用快速中间件通过卷曲或失眠来收听HTTP请求。在中间件中,我想使用body-parser提取查询。现在我遇到了旋转变压器问题。
请查看我的代码。
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和
发布查询时curl -XPOST -H“Content-Type:application / graphql”-d“{product(name:\”Apfel \“){name price}}”http://localhost:4000/graphql
我收到回复{“数据”。 {“product”:null}}。旋转变压器不会被调用。我怎么能正确地做到这一点?
答案 0 :(得分:1)
你能试试吗?
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));
});
});

我认为这可以解决您的问题
答案 1 :(得分:0)
我建议观看有关GraphQl的FunFunFunction系列剧集: GraphQl Basics
他的所有剧集都非常有趣(而且非常有趣)......