Я создаю приложение Firebase, которое рассчитывает время коммутирования между адресами «от» и «до», которые хранятся в моей базе данных реального времени. Я хочу вызвать API для расчета каждой поездки и вернуть те времена коммутирования, как только все будут рассчитаны. Я впервые использую Promise.all
, чтобы создать такое поведение. Однако, в конце концов, я получаю только пустые объекты для результата моих вызовов. Любые советы?
exports.updateCommutes = functions.https.onRequest((request, response) => {
const ref = admin.database().ref('/users/test_user/commutes');
return ref.once('value').then((snapshot)=>{
var urls = [];
const testURl = 'https://maps.googleapis.com/maps/api/distancematrix/json?key=XXXX&origins=Boston,MA&destinations=Cambridge,MA'; // I'm using a test API call for now
return Promise.all([fetch(testURl),fetch(testURl)])
.then((responses)=>{
return responses.map((res)=>res.json())
})
.then((data)=>{
console.log(data);// this prints out: [ Promise { <pending> }, Promise { <pending> } ]
return response.send(data);
})
})
.catch((error)=>console.log("error$"+error))
});
Моя база данных выглядит так:
icommute-firebase
- users
- - test_user
- - - commutes
- - - - M26JimVJ3P_nEvm1L6n
- - - - - from: Boston,MA
- - - - - to: Cambridge,MA
- - - - M26Joyu-rLGomY_oElm
- - - - M26JtYyvGK_fCx0FE-Q
- - - - M26Qhuc-gebRppy320c
С почтальоном по GET-запросу на http://localhost: 5001 / icommute-firebase / us-central1 / updateCommutes , приводит к:
[
{},
{}
]
, когда я ожидаю:
[
{
"destination_addresses": [
"Cambridge, MA, USA"
],
"origin_addresses": [
"Boston, MA, USA"
],
"rows": [
{
"elements": [
{
"distance": {
"text": "4.9 km",
"value": 4925
},
"duration": {
"text": "16 mins",
"value": 978
},
"status": "OK"
}
]
}
],
"status": "OK"
},
{
"destination_addresses": [
"Cambridge, MA, USA"
],
"origin_addresses": [
"Boston, MA, USA"
],
"rows": [
{
"elements": [
{
"distance": {
"text": "4.9 km",
"value": 4925
},
"duration": {
"text": "16 mins",
"value": 978
},
"status": "OK"
}
]
}
],
"status": "OK"
}
]