在使用"在孩子添加"收听的参考文献中有 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})