根据时间Firebase实时数据库获取对象

时间:2019-05-12 04:50:23

标签: firebase react-native firebase-realtime-database

我正在创建一个需要获取所有未来事件的应用。人们可以为将来的日期创建活动,应用程序的主页将检索所有即将发生的活动。

所有事件在创建后都会存储事件的纪元时间。然后,我回顾所有事件并比较每次的当前时间。然后,我可以控制台对其进行记录并显示。

我的问题是我不确定如何去获取所有信息然后呈现它。

到目前为止,这是数据库: enter image description here

这是查询数据库并比较时间的代码。

 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查询每个键并设置返回到数组中的每个对象。然后最后渲染最后一个数组中的每个对象。

我觉得这不是一种有效的方法。

0 个答案:

没有答案