超出最大调用堆栈大小崩溃 - Firebase 在子级添加了侦听器


如果我

在使用"在孩子添加"收听的参考文献中有 1255 个或更多孩子,那么在启动我的节点 js 服务器(使用 Firebase-admin 包(时,我的最大调用堆栈大小超过了崩溃。

FIREBASE WARNING: Exception was thrown by user callback. RangeError: Maximum call stack size exceeded

如果我不向孩子添加的侦听器(或小于 1255 的任何内容(添加limitToLast(1255),则崩溃会不断发生。

我想在不让程序崩溃的情况下收听所有存在或添加的值,无论大小如何,但我不确定如何做到这一点。

on('value'( 可以完美地与数据库引用中的>10k 节点配合使用,但在最初查找所有值时则不能与"On Child Add"配合使用。

与"删除孩子"相同的问题。

这是我的"孩子添加"代码:

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})

最新更新