[英]Maximum call stack size exceeded crash - Firebase on child added listener
如果我正在使用“在添加子項上”監聽的引用中有1255個或更多子項,則在啟動節點js服務器(使用firebase-admin程序包)時,我一直在獲得最大調用堆棧大小超出崩潰的崩潰。
FIREBASE WARNING: Exception was thrown by user callback. RangeError: Maximum call stack size exceeded
如果我不將limitToLast(1255)
添加到我的孩子添加的偵聽器(或小於1255的任何東西)中,則崩潰不斷發生。
我想收聽所有先前存在的值或不考慮大小而添加的值,而不會導致程序崩潰,但是我不確定如何執行此操作。
on('value')可以完美地與數據庫引用中的> 10k個節點配合使用,但在最初查找所有值時不能與'add on child'一起使用。
同樣的問題與“在兒童被刪除”。
這是我的“添加子級”代碼:
messageRef.on('child_added', function(snapshot) {
var payload = {};
var msgKey = snapshot.key;
var msgName = snapshot.child('name').val();
var msgContent = snapshot.child('msg').val();
var msgTime = snapshot.child('time').val();
var message = {msg: msgContent, name: msgName, time: msgTime};
payload['messages/' + msgKey] = message;
ref.update(payload);
});
非常感謝您的幫助!
set
是一種更簡單的操作,可以避免某些限制。 另外,我會在傳遞給ref
的路徑前加上/
前綴,以確保從根節點進行引用。
將您的最后6條語句替換為:
const message = snapshot.val();
const name = message.name;
const content = message.content;
const time = message.time;
firebase.database().ref(`/messages/${msgKey}`).set({name, msg, time})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.