2017-08-12 87 views
0

我有一個擁有多個用戶的Firebase數據庫,並且我想爲每個用戶註冊一個單獨的偵聽器。這是因爲整個數據庫上的監聽器都是多餘的,因爲每次更改每個用戶的數據時,所有用戶的數據都將在回調中返回。如何註冊多個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監聽器,並且似乎對其他用戶的聽衆都得到垃圾收集。什麼是正確的方法來做到這一點;我必須使用多個線程嗎?

回答

1

你只使用一個參考來嘗試存儲所有你需要的參考。將它們儲存在裁判的數組來代替:

var company_ref = [] 
for (var i = 0; i < 26; i++){ 
    company_ref[i] = company.child(i); 
    // do stuff with company_ref[i] 
} 

記住,您使用的是被稱爲id變量還承擔而不必定義它,至少不會告訴你它的方式。也許你的意思是i

+0

謝謝,這工作! – Alex

相關問題