Область применения функции NodeJS API - Firebase Function & Twitter API - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь отправить ответ от Twitter API на HTTP-ответ Firebase - хотя и смущен областью действия в Node. Я получаю console.log на сервере Firebase, так что все в порядке с API Twitter. Я не могу понять, как передать ответ из GET-запроса во внешнюю переменную, которая отправит HTTP-ответ Firebase.


exports.twitterFunction = functions.https.onRequest((request, response) => {

  const client = new Twitter({
    consumer_key: "",
    consumer_secret: "",
    access_token_key: "",
    access_token_secret: ""
  });

  const params = { screen_name: "" };
  const latesttweet = "";

  client.get("statuses/user_timeline", params, (error, tweets, response) => {
    if (error) throw error;
    this.latesttweet = tweets[0].text;
    console.log(tweets[0].text);
    console.log(latesttweet);
  });

  response.send(latesttweet);

});

1 Ответ

2 голосов
/ 05 ноября 2019

client.get() является асинхронным и возвращается немедленно, прежде чем данные станут доступны. Данные будут доступны через некоторое время в функции обратного вызова, которую вы передали ей. Следовательно, вы должны отправлять ответ изнутри обратного вызова, поскольку именно там ваши данные будут доступны.

  client.get("statuses/user_timeline", params, (error, tweets, response) => {
    if (error) throw error;
    this.latesttweet = tweets[0].text;
    console.log(tweets[0].text);
    console.log(latesttweet);
    response.send(latesttweet);   // move this inside the callback
  });
...