myFirebaseDatabase
+accounts
Instagram|account555555
->extraInfo
->counts
->*followed_by*
->follows
->media
Facebook|account999999
->pages
+0
->*fan_count*
+1
以上是我的数据库帐户部分的结构。我想要做的是编写一个node.js脚本,该脚本汇总了连接到我们数据库的所有帐户的总计以下内容。每个平台的数据结构都不同,这对我来说很具挑战性。每个Facebook帐户都有多个页面,每个帐户都有自己的fan_count(下面),而Instagram是1:1。如何使用不同嵌套数据的Firebase forEach查询?
function getUsers(){
admin.database().ref("accounts").once('value').then(function(snapshot) {
snapshot.forEach(function(accountSnapshot){
overallFollowers = 0
var instagram = accountSnapshot.val().extraInfo.counts;
var facebook = accountSnapshot.val().pages;
console.log(instagram);
console.log(facebook);
});
});
};
getUsers();
我试着把它放在一起,看看它是否会打印出接近我后面的东西。对于console.log(instagram),它将打印:{followed_by:39402,如下所示:136,media:21},如果不是instagram页面,则为undefined。对于Facebook,它将打印一个包含fan_count的复杂数组。如果我尝试调用accountSnapshot.val()。extraInfo.counts.followed_by,则会出现错误。
请帮助指引我在正确的方向。我如何简单地隔离followed_by和fan_count而不处理额外的数据,以便我可以将所有这些值一起添加?非常感谢你的帮助!
非常感谢最好的!今天要深入了解这一点。我运行你的代码并得到这个错误: (节点:42255)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):TypeError:无法读取未定义的属性'followed_by' (节点:42255)DeprecationWarning:未处理的承诺拒绝弃用。将来,未处理的承诺拒绝将以非零退出代码终止Node.js进程。 这是我得到的错误,如果在我以前的代码中,我尝试调用accountSnapshot.val()。extraInfo.counts.followed_by。 你认为这个问题是什么? – ryangineer
获取与fan_count同样的错误:( – ryangineer
你的数据库使用的是Firebase推送键吗?,snapshot.val()的结果是什么,对不起,我真的无法在这里看到实际的数据库json –