2013-04-23 2 views
0

у меня есть следующий код в моем приложенииFirebase удалить странное поведение

this.obsRef.remove(function(error) { 
     self.firebaseRef.child('users/'+self.user.name+'/invite') 
       .remove(function(error) { 
        self.enterLobby(); 
       }); 
      }); 

Что код должен сделать, это удалить obsRef из firebase, а затем удалить расположение на «пользователей/$ пользователя/пригласить». После того, как все удалено, вызывается enterLobby .

Теперь проблема на enterLobby() я получил этот следующий код:

this.userListRef.child(this.user.name).child('invite') 
      .on('child_added', function(snapshot) { 
      console.log("INVITE"); 
     }); 

И код внутри enterLobby() выполняется каждый раз. Мне что-то не хватает или обратный вызов для .remove() не работает так, как предполагалось? Спасибо

ответ

1

Обработчик .on('child_added') будет удостовериться, что предоставленный обратный вызов вызывается каждый раз, когда ребенок добавляется. Вот почему вы видите, что код выполняется несколько раз. Вместо этого вы можете использовать .once('value'):

this.userListRef.child(this.user.name).child('invite'). 
    once('value', function(snapshot) { console.log("INVITE"); }); 
+0

Мне нужна функция .on(), чтобы добавить несколько детей. Проблема заключается в том, что перед вызовом callLobby() несколько раз, чтобы убедиться, что this.userListRef.child (this.user.name) .child ('invite'). Off(). – IziFortune

+0

Что вызывает удаление? Каждый удаленный обратный вызов будет вызываться только один раз, поэтому, если само удаление запускается несколько раз, будет вызван enterLobby(). – Anant

Смежные вопросы