GraphQL. Как написать резольвер

Я только начал разбираться в GraphQL. Я использую GraphQL.js и выражаю. Прямо сейчас я пытаюсь создать простой пример, используя жестко запрограммированный JSON в качестве данных в моем файле javascript. Затем я хочу использовать промежуточное ПО промежуточного уровня для прослушивания HTTP-запросов через curl или бессонницу. В промежуточном программном обеспечении я хочу извлечь запрос с помощью парсера тела. Прямо сейчас у меня проблемы с резолверами.

Пожалуйста, взгляните на мой код.

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}}. Решатель не вызывается. Как мне это сделать правильно?


person Patrick Seume    schedule 09.10.2017    source источник


Ответы (2)


Вы можете это попробовать?

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));
    });
});

Я думаю это может решить вашу проблему

person Seena V P    schedule 09.10.2017

Я рекомендую посмотреть серию FunFunFunction, посвященную GraphQl: Основы GraphQl

Все его серии довольно интересные (и действительно забавные) ...

person Wayrex    schedule 09.10.2017