Получение объектов на основе базы данных реального времени Firebase - PullRequest
0 голосов
/ 12 мая 2019

Я создаю приложение, которое должно получать все будущие события. Люди могут создавать события для будущих дат, а домашняя страница приложения будет извлекать все предстоящие события.

Все события при создании сохраняют время эпохи события. Затем я получаю все события и сравниваю текущее время с каждым разом. Затем я могу утешить журнал, и он отобразится.

Моя проблема в том, что я не уверен, как получить всю информацию, а затем сделать ее.

На данный момент это база данных: 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 для тех, которые удовлетворяют моему состоянию. Поместите это в массив, затем создайте функцию, которая перебирает массив, запрашивая каждый ключ у базы данных и устанавливая каждый объект, возвращаемый в массив. Затем, наконец, рендеринг каждого объекта из последнего массива.

Я чувствую, что это неэффективный подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...