因此,基本上我试图实现的是为每个查询的事件获取参与者文档。请查看发布的图像。两者都有一个需要匹配的公共eventid字段。下面的代码仅适用于第一次迭代,但在getrealtimechild()之前立即停止。events文档有一个id字段
useEffect(() => {
//Fetch events ordered by timestamp
const eventsRef = realDB.ref('Events').orderByChild('EventTimestamp').limitToFirst(3);
setLoader(true);
eventsRef.on('value', (snapshot) => {
//var o = 0;
//var i = 0;
//Fetch Participants of each events
snapshot.forEach(function (events) {
// console.log(events.key)
// console.log('outer =>' ,o+=1)
getRealtimeChild('Participants', 'EventId', events.key).limitToLast(5).get().then(function (snapshot) {
console.log(events.key)
snapshot.forEach(function (p) {
// console.log('p =>',p.key)
// console.log('inner =>' ,i+=1)
participants=[];
participants.push(p.val())
setParticipantList([])
setParticipantList(participants)
// console.log(participants)
// console.log(participantList)
})
eventList.push(Object.assign(events.val(),{id: events.key},{participants:participantList}));
// console.log(participantList)
});
});
setEventsList(eventList)
setLoader(false);
console.log(eventList)
});
}, [])
1条答案
按热度按时间0yg35tkg1#
你可以使用
equalTo
方法获取特定事件的参与者。您还可以使用
limitToFirst
或limitToLast
方法根据您的需要。MethodDescriptionLimitToFirst设置从有序结果列表开始返回的最大项数。LimitToLast设置从有序结果列表结束返回的最大项数。