Я пытаюсь развернуть сервер 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 в целом?