簡體   English   中英

最大調用堆棧大小超過崩潰數-添加子偵聽器的Firebase

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM