我尝试从Firebase数据库中的某些数据生成报告,并使用Firebase云功能实现此目的。由于数据非常庞大,我得到了内存错误。
我认为如果我做分页它会起作用。但是,我不确定如何在云功能中进行分页。有没有更好的方法来实现这一目标? 如何在Firebase云功能中执行分页?
我的数据库结构类似于
{"threads" : {
"228440-1704-4bba-87d7-27327" : {
"messages" : {
"8c98a76c-4456-4326-8e18-6d036b40bfa4" : {
"is_failure" : 0,
},
"898376c-4456-4326-8e18-6deb4wr0bfa4" : {
"is_failure" : 0,
}
},
"recipients" : {
"6036220" : {
"group_type" : 2,
},
"7036220" : {
"group_type" : 2,
}
}
}
" thread"下有数千个这样的节点。节点,我不能通过简单地获取"线程"节点。我需要计算
现在,我的代码(没有分页)看起来如下,它在日志中给出了内存错误,因此无法正常工作:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.thread_node = functions.https.onRequest((req, res) => {
var ref = admin.database().ref("/threads");
return ref.once("value", function(threadSnapshot){
var numberOfThreads = threadSnapshot.numChildren()
var totalMessages = 0
console.log("number of threads" + threadSnapshot.numChildren())
threadSnapshot.forEach(function(threadSnapshot1) {
var ref = threadSnapshot1.child("messages")
var messagesPerThread = ref.numChildren()
totalMessages = totalMessages + messagesPerThread
})
res.send(`
<!doctype html>
<html>
<head>
</head>
<body>
<p>numberOfThreads = ${numberOfThreads}</p>
</body>
</html>`
);
});
});