我正在尝试创建一个Firebase Scheduled Function,它每60分钟运行一次,并更新一些国家/地区。这些国家的数据是从外部API获得的。
以下是我现在得到的:
const functions = require("firebase-functions");
exports.updateCountries = functions.pubsub.schedule('every 60 minutes').onRun((context) => {
const URL = //build my request URL
const axios = require('axios')
return axios.get(url).then(response => {
return updateCountries(response.data.results)
}).catch(error => {
return console.log("Request Error:", error)
});
}
function updateCountries(results) {
console.log("Updating data!", results)
}
在浏览器或Postman中请求我的URL会得到以下结果:
{
"code": 200,
"results": [
{
"country": "in"
},
//...
}
}
现在,我的问题是updateCountrys函数似乎没有接收到所有数据。在控制台日志中,我可以看到结果JSONArray并不完整。
我尝试了JSON.parse(results(,它在异常行抛出了一个意外的令牌。所以我很确定axios的反应是不完整的。
我在这里缺少什么?我应该如何从预定函数中请求外部API?
您似乎直接从Axios返回,这将结束云功能。在记录和返回数据之前,确保您的端点已完全解析,这也是一个异步结果。