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。
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),它将打印:{follow_by:39402,follow:136,media:21}并且如果它不是Instagram页面,则为undefined。对于Facebook,它将打印一个包含fan_count的更复杂的数组。如果我尝试调用accountSnapshot.val()。extraInfo.counts.followed_by,我会收到错误。
请指点我正确的方向。如何在不处理额外数据的情况下简单地隔离follow_by和fan_count,以便将所有这些值一起添加?非常感谢你的帮助!
答案 0 :(得分:0)
我认为Object.keys()
是最好的,而不是使用forEach
admin.database().ref("accounts").once('value', function (snapshot) {
const accountSnapshot = snapshot.val() || {};
Object.keys(accountSnapshot).sort().map(key => {
if (accountSnapshot[key].extraInfo.counts.followed_by) {
console.log(key, accountSnapshot[key].extraInfo.counts.followed_by);
}
if (accountSnapshot[key].pages.fan_count) {
console.log(key, accountSnapshot[key].pages.fan_count);
}
});
})