Как мне написать GET-запрос Javascript в функциях Firebase? - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь написать простой запрос GET, который возвращает данные JSON в https://hacker-news.firebaseio.com/v0/item/160705.json

Я пробовал несколько вещей, но ничего не работает.(Я на платном плане Firebase, который разрешает запросы к внешним API).Я пишу функцию, затем запускаю firebase deploy и выполняю функцию, но она либо прерывается, либо выдает другую ошибку.

В качестве теста этот простой HTTP-вызов работает нормально:

exports.helloWorld = functions.https.onRequest((request, response) => {
  response.send('test');
})

Но когда я пытаюсь запустить следующее, нажимая HN API, он отключается:

exports.helloWorld = functions.https.onRequest((request, response) => {
  request.get('https://hacker-news.firebaseio.com/v0/item/160705.json', function (error, res, body) {
    if (!error && res.statusCode == 200) {
      console.log(body) // Print the google web page.
    }
    return response.send("") // this terminates the function
  })
})

РЕДАКТИРОВАТЬ

Журнал Firebase для вышеуказанной функции говорит: Function execution started Function execution took 60002 ms, finished with status: 'timeout'

Я также пробовал пару других вещей, например:

const options = {
  host: 'hacker-news.firebaseio.com',
  path: '/v0/item/160705.json'
};

// make the request
exports.hackerNews = functions.https.onRequest(options, (resp) => {
  console.log(resp)
});

, но это не удается с 500 Error: could not handle the request и Referrer Policy: no-referrer-when-downgrade

Не должно быть так сложно написать простой запрос GET в функциях Firebase, поэтому я должен делать что-то глупое.Спасибо.

1 Ответ

0 голосов
/ 27 мая 2018

Я понял это:

exports.helloWorld = functions.https.onRequest((req, res) => {
  request.get('https://hacker-news.firebaseio.com/v0/item/160705', (error, response, body) => {
    if (!error && response.statusCode === 200) {
      return res.send(body);
    }
    return res.send('ERROR: ' + error.message);
  })
});

Очевидно, что вы должны вернуть что-то в случае успеха или ошибки, вы просто не можете выполнить другую функцию, например console.log ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...