【发布时间】:2016-06-07 00:16:51
【问题描述】:
我正在使用 Firebase child_added 来监视添加到我的数据库中的新条目。
它似乎工作了一段时间,但是当连接空闲时我注意到了一些问题。如果我在 Firebase 返回重复项时让我的应用程序长时间打开。我认为这可能归结为连接被丢弃然后建立。
这是我的代码。
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();
},
【问题讨论】:
-
绝对不应该这样。你确定 getVoicemailList 只被调用一次吗? Firebase SDK 对于不引发重复事件非常小心。您能否指定您正在使用的 Firebase SDK 的版本并提供 MCVE (stackoverflow.com/help/mcve)?
标签: javascript jquery firebase firebase-realtime-database