我正在创建一个需要获取所有未来事件的应用。人们可以为将来的日期创建活动,应用程序的主页将检索所有即将发生的活动。
所有事件在创建后都会存储事件的纪元时间。然后,我回顾所有事件并比较每次的当前时间。然后,我可以控制台对其进行记录并显示。
我的问题是我不确定如何去获取所有信息然后呈现它。
这是查询数据库并比较时间的代码。
var currentTime = Date.now();
var ref = firebase.database().ref('Events/');
var query = ref.orderByChild('availableSpots');
query.once('value', function(snapshot) {
snapshot.forEach(function(child){
var time = child.val().epochTime;
if (currentTime<time) {
//Where should I push this???
}
})
})
我当前正在渲染一些虚拟数据
renderRequests() {
const requests = [
{
id: 1,
spots: "15",
date: "Tuesday 4/16/19",
puckdrop: "10pm",
level: "B",
organizer: "Somg guy",
time: 12,
availability: "Available",
},
{
id: 2,
spots: "0",
date: "Wednesday 4/17/19",
puckdrop: "11pm",
level: "All",
organizer: "Brian",
time: 22,
availability: "Sold out",
},
{
id: 3,
spots: "1",
date: "Wednesday 4/17/19",
puckdrop: "9pm",
level: "D",
organizer: "Erik",
time: 24,
availability: "Available",
},
];
这是渲染部分
<ScrollView showsVerticalScrollIndicator={false}>
{requests.map(request => (
<TouchableOpacity activeOpacity={0.8} key={`request-${request.id}`} onPress={() => this.props.navigation.navigate('Event', {
id: request.id,
spots: request.spots,
date: request.date,
puckdrop: request.puckdrop,
level: request.level,
organizer: request.organizer,
availability: request.availability,
})}>
{this.renderRequest(request)}
</TouchableOpacity>
))}
</ScrollView>
我不确定该怎么做。我觉得应该采用的方法是,在进行历时比较时,将满足条件的子项作为child.key。将其放入数组中,然后创建一个遍历数组的函数,以针对db查询每个键并设置返回到数组中的每个对象。然后最后渲染最后一个数组中的每个对象。
我觉得这不是一种有效的方法。