我正在尝试将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
});