Получение данных из API внутри распознавателя graphQL, развернутого в функции Azure node.js - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь развернуть сервер GraphQL на платформе node.js с помощью функций Azure. Мне удалось развернуть базовое приложение hello world.
Однако мне нужно получить данные из бэкэнд-API в распознавателе. Я не могу заставить пакет fetch или request работать в функциях Azure.
Ниже мой код:

var { graphql, buildSchema } = require('graphql');  
var fetch = require('node-fetch');
var request = require('request');

var schema = buildSchema(`
  type Query {
    myObject: MyObject
  }

  type MyObject { 
   someId (data: String) : String
  }
`);

var root = { 
  myObject: () => {
     return { 
        someId: (args) => {
            // Code enters till this point. 
            // I can see context.info messages from here. 
            // return "hello";  <--- This works perfectly fine. 
            return request('http://example.com', function (error, response, body) {
                    // -----> Code never enters here.
                    return body;
                });                   
          }
       }   
   }
};

module.exports = function (context, req) {
     context.log('JavaScript HTTP trigger function processed a request.');
     graphql(schema, req.body, root)
        .then(response => {
           context.res = {
               body: JSON.strigify(response)
          };

    context.done();
 });
};

Я пытался использовать fetch и request модули. Но с ними обоими я вижу одинаковое поведение - ответ никогда не возвращается. Время ожидания запроса истекает через 5 минут. Если вместо fetch или request я предпочитаю возвращать какое-то фиктивное значение, я вижу, что ответ правильно возвращается на запрос. С fetch я не вижу ни блока then, ни блока catch.

Примечание. Я пробовал URL-адреса http и https в URI запроса, но ни один из них, похоже, не возвращает никаких данных.

Это проблема с тем, как я реализовал fetch / request, или это проблема с функциями Azure в целом?

1 Ответ

0 голосов
/ 15 сентября 2018

Отвечая на мой собственный вопрос: кажется, что выборка узла и запрос фактически не возвращают обещания.Обертка request вокруг Promise, похоже, решает проблему.Что-то похожее на этот ответ .

...