我正在尝试将Twitter API的响应发送到Firebase HTTP响应-有点被Node中的作用域所混淆。我在firebase服务器上获得了console.log,因此可以使用Twitter API进行所有设置。我不知道如何将响应从GET req内部传递到外部变量,该变量将发送Firebase HTTP响应。


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

});

最佳答案

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

09-25 21:50