Ich verwende Firebase child_added
, um nach neuen Einträgen zu suchen, die meiner Datenbank hinzugefügt werden.Firebase child_added Ereignis-Listener, der doppelte Daten zurückgibt
Es schien für eine Weile zu funktionieren, aber dann bemerkte ich einige Probleme beim Verlassen der Verbindung im Leerlauf. Wenn ich meine App für einen längeren Zeitraum offen lasse, wenn Firebase Duplikate zurückgibt. Ich denke es liegt vielleicht daran, dass die Verbindung fallengelassen und dann eingerichtet wird.
Hier ist mein Code.
getVoicemailList: function() {
var self = this;
var userId = firebase.auth().currentUser.uid;
firebase.database().ref('voicemails/' + userId).on('child_added', function(snapshot) {
var voicemail = snapshot.val();
self.addToCollection(voicemail.callerID, voicemail.timeReceived, voicemail.transcription, voicemail.audioURL);
});
},
addToCollection: function(callerID, timeReceived, transcription, audioURL) {
console.log(callerID)
var collectionList = $('.collapsible').length;
if(!collectionList) {
$('#main-content').append('<ul class="collapsible" data-collapsible="accordion"></ul>')
}
var output = '<li>';
output += '<div class="collapsible-header"><i class="material-icons">filter_drama</i>'+callerID+'</div>';
output += '<div class="collapsible-body">';
output += '<p><audio id="source" controls>';
output += '<source src="'+audioURL+'" type="audio/mpeg">';
output += '</audio></p>';
output += '<p>'+timeReceived+'</p>';
output += '<p>'+transcription+'</p>';
output += '</div>';
output += '</li>';
$('.collapsible').append(output);
$('.collapsible').collapsible();
},
Das sollte definitiv nicht der Fall sein. Du bist sicher, dass getVoicemailList nur einmal aufgerufen wird? Das Firebase-SDK ist ziemlich vorsichtig, wenn doppelte Ereignisse nicht ausgelöst werden. Können Sie die Version des von Ihnen verwendeten Firebase SDK angeben und einen MCVE (https://stackoverflow.com/help/mcve) bereitstellen? –