Firebase Once () срабатывает более одного раза - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь получить данные из firebase с помощью js в приложении фляги.Хотя это и работает, но выполняется намного чаще, чем один раз.Это мой кодЯ просто пытаюсь получить идентификаторы сообщений, сохранить их в массиве, а затем добавить их при открытии чата.Я просто хочу, чтобы это было выполнено один раз.что я могу сделать?

Это мой код:

//Getting the messages id of the logged in user from firebase and pushing them into the array
firebase.database().ref().child("user-messages").child("{{usuario}}").once('value', function(snapshot) {
        console.log(snapshot.val());
        snapshot.forEach(function(child) {
           console.log("Child:  " + child.key + "//////" + child.val());
           var msg = {};
           msg.key = child.key;
           msg.val = child.val();
           mensajes.push(msg);
        });

});

//Looping the array and looking for the messages on firebase
for(i = 0; i < mensajes.length; i++){
        console.log(mensajes);
        firebase.database().ref().child("Mensajes").child(mensajes[i].key).once('value', function(childsnapshot) {
                var id;
                if(mensajes[i].val == "1"){
                    id = usuario[0].nombre.split(" ")[0];
                    user = buscarUsuario(childsnapshot.val().to);
                } else if(mensajes[i].val == "2"){
                    user = buscarUsuario(childsnapshot.val().from);
                    id = user.nombre.split(" ")[0];
                }

                if (user.user == usuarios[index].user){
                    if(chat.length){
                        chat.chatbox("option", "boxManager").addMsg(id, childsnapshot.val().message);
                    } else{
                        div.chatbox("option", "boxManager").addMsg(id, childsnapshot.val().message);
                    }
                }
        });
}   

Итак, первая итерация работает, выполняется 5 раз, всего 5 сообщений:

Но потом я получаю это (включается и выключается, никогда не останавливается, вылетает страница):

enter image description here

Что я делаю не так?

Заранее спасибо:)

1 Ответ

0 голосов
/ 20 октября 2018

Вы звоните once() внутри for петли.Так что, конечно, вы можете ожидать, что он будет выполняться при каждом вызове в цикле, длина mensajes.

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