我有一个包含多个用户的firebase数据库,我想为每个用户注册一个单独的监听器。这是因为整个数据库上的监听器都是冗余的,因为每次更改每个用户的数据时,所有用户的数据都将在回调中返回。
假设用户编号为0 - 25
。我有以下代码:
var admin = require("firebase-admin");
var serviceAccount = require("serviceAccountCredentials.json");
var config = {
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://test.firebaseio.com"
};
var app = admin.initializeApp(config);
var db = admin.database();
var company = db.ref('companies');
for(var i = 0; i < 26; i++){
company_ref = company.child(i);
company_ref.on("child_added", function(snapshot){
console.log("child_added for " + i);
console.log(snapshot.val());
});
company_ref.on("child_changed", function(snapshot){
console.log("child_changed for " + i);
console.log(snapshot.val());
});
company_ref.on("child_removed", function(snapshot){
console.log("child_removed for " + i);
console.log(snapshot.val());
});
}
但是,此代码仅为用户25
注册一个侦听器,并且看起来其他用户的侦听器都被垃圾收集。这样做的正确方法是什么?我必须使用多个线程吗?
答案 0 :(得分:1)
您只使用一个参考来尝试存储您需要的所有参考。将它们存储在refs数组中:
Shape
另外请记住,您没有使用名为var company_ref = []
for (var i = 0; i < 26; i++){
company_ref[i] = company.child(i);
// do stuff with company_ref[i]
}
的变量而没有定义它,至少不是您显示它的方式。也许你的意思是id
?