javascript - Firebase 函数不会返回数据?
问题描述
我正在尝试制作一个从用户那里获取推文的 HTTPS 可调用函数。
在我的应用程序中:
const getTweets = firebase.functions().httpsCallable('getTweets');
getTweets({
username: 'someUsername',
})
.then(res => console.log(res))
.catch(e => console.log(e));
但是没有数据返回......我得到一个空对象{data: null}
这是功能:
exports.getTweets = functions.https.onCall(async (data, context) => {
const Twitter = require('twitter');
const client = new Twitter({
consumer_key: functions.config().twitter.api_key,
consumer_secret: functions.config().twitter.api_secret_key,
access_token_key: functions.config().twitter.access_token,
access_token_secret: functions.config().twitter.access_token_secret,
});
const params = { screen_name: data.username };
// ======== I've tried this: ========
return client.get('statuses/user_timeline', params, (error, tweets, response) => {
if (!error) {
console.log(tweets);
}
});
// ======== And this: ========
client.get('statuses/user_timeline', params, (error, tweets, response) => {
if (!error) {
console.log(tweets);
return tweets;
}
});
});
解决方案
似乎是一个异步问题,您可以Promise
改用(https://www.npmjs.com/package/twitter#promises):
exports.getTweets = functions.https.onCall(async (data, context) => {
const Twitter = require('twitter');
const client = new Twitter({
consumer_key: functions.config().twitter.api_key,
consumer_secret: functions.config().twitter.api_secret_key,
access_token_key: functions.config().twitter.access_token,
access_token_secret: functions.config().twitter.access_token_secret,
});
const params = { screen_name: data.username };
try {
return client.get('statuses/user_timeline', params);
} catch (err) {
console.log(err);
}
});
推荐阅读
- java - 为什么控制器方法在测试方法中返回响应的无效内容?
- spring-boot - 由于解析错误,未调用 Spring-Kafka 消费者的侦听器方法
- angular - 如何保持与角度的连接
- python-3.x - 无法将列表添加到 pandas DataFrame 列
- python - 如何找出列表中的第一个重复数字?
- sql - Presto - 返回数组行的 1 个元素
- javascript - 从 javascript 列表中仅删除一个破折号
- angular - 拖动地图标记时使用 matGoogleMapsAutocomplete 更新地址字段
- c# - MongoDB,C#。更新多个不同条件的数组元素
- substrate - 如何在专用网络中创建存在证明运行时?