【发布时间】:2017-11-03 05:53:40
【问题描述】:
我有一个案例需要获取所有 event 对象。每个event 对象都有一个属性city_id,它是列表中单个city 对象的关系键,所有cities。
...
|- events
| |- event_id
| | |- title
| | |- city_id
|
|- cities
| |- city_id
| | |- name
| | |- location
...
所以我做了类似join 查询:
const rootRef = firebase.database().ref();
async function getAllEvents() {
const eventsRef = rootRef.child('events');
const eventsArray = [];
await eventsRef.on('child_added', async (snapshot) => {
const eventObject = snapshot.val();
const cityObject = await getEventCity(eventObject.city_id);
eventObject.city = cityObject;
eventsArray.psuh(eventObject);
});
return eventsArray;
}
function getEventCity(cityId) {
return rootRef.child('cities')
.child(cityId)
.once('value', (venue) => {
return venue.val();
});
}
一切都适用于查询。问题是我想获取数组中的所有事件,但是下面的代码不起作用:
const allEvents = getAllEvents();
我在eventsRef.on('child_added) 之前有await 的事件仍然返回初始的空数组。
我做错了什么,当.on('child_added') 上的所有内容的获取完成时,我如何才能抓住这一时刻?
【问题讨论】:
标签: javascript firebase asynchronous firebase-realtime-database async-await