繁体   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