2017-01-18 138 views
0

我有以下Json模式,可以使用什麼firebase查詢來獲取節點名稱(0153,0154),我可以獲取名稱(joel,vikram,sachin )採用一次法從Firebase數據庫根據emailId匹配獲取節點名稱

"EmployeeInfo": 
     { 
     "0153": 
     { 
      "Name":"Joel", 
      "Dept":"Engineering", 
      "Email":"[email protected]" 
     }, 
     "0163": 
     { 
      "Name":"Vikram", 
      "Dept":"Engineering", 
      "Email":"[email protected]" 
     }, 
     "0173": 
     { 
      "Name":"Sachin", 
      "Dept":"Engineering", 
      "Email":"[email protected]" 
     } 

這裏是我的javascript函數:

function Call() { 

    var dbref = new Firebase("https://logintrialapp.firebaseio.com/Employee/EmployeeInfo"); 
    var login = localStorage.getItem("Email"); 
    dbref 
    .once("value") 
    .then(function(snapshot) { 
     snapshot.forEach(function(childSnapshot) { 
      childData = childSnapshot.val(); 
      name = childData.Name; 
      var n = login.localeCompare(name); 
      console.log(name); 

      if (n != 0) { 
       var eid = snapshot.val(); 
       console.log("Hello" + eid); 
      } 
      console.log(snapshot.val()); 
     }) 
    }) 

與此代碼我能夠得到的名字,但我要檢索的節點名稱,有什麼可以使用查詢來獲得節點名稱基於emailid匹配標準

輸出:

Joel 
Checkworks.html:50 Hello[object Object] 
    Checkworks.html:55 Object {0153: Object, 0163: Object, 0173: Object}0153: ObjectDept: "Engineering"Email: "[email protected]"Name: "Joel"__proto__: Object0163: Object0173: 
    Object__proto__: Object 
    Checkworks.html:44 Vikram 
    Checkworks.html:50 Hello[object Object] 
    Checkworks.html:55 Object0153: ObjectDept: "Engineering" 
    Email: "[email protected]"Name: "Joel"__proto__: Object0163 
    : Object0173: ObjectDept: "Engineering"Email: "[email protected]"Name: "Sachin"__proto__: Object__proto__: Object 
    Checkworks.html:44 Sachin 
    Checkworks.html:50 Hello[object Object] 
    Checkworks.html:55 Object {0153: Object, 0163: Object, 0173: Object} 

回答

0

有現在的REST API,將獲取只是一個路徑鍵在淺命令。這尚未添加到SDK中。

在Firebase中,如果不檢索下面的數據,就無法獲取節點名稱列表。還沒有。性能問題可以通過規範化來解決。

本質上,您的目標是將數據拆分爲易損件。將您的視頻密鑰列表存儲在一個路徑中,可能包含標題等多個元字段,並將批量內容存儲在其他位置。對於 '/ video_meta/ID /鏈接,標題,... /video_lines/ID/......'

要了解更多關於反規範化,看看這篇文章:https://www.firebase.com/blog/2013-04-12-denormalizing-is-normal.htm

獲得「名「任何快照(在這種情況下,通過push()創建的ID)只需要調用name()這樣的:

var name = snapshot.name(); 

如果你想獲得已自動生成由push()的名字,你可以叫name()上返回的參考,如下所示:

var newRef = myDataRef.push(...); 
var newID = newRef.name(); 
1

要獲得childSnapshot呼叫childSnapshot.key的關鍵:

.then(function(snapshot) { 
    snapshot.forEach(function(childSnapshot) { 
     childKey = childSnapshot.key; // Get the key of the child 
     childData = childSnapshot.val(); 
     name = childData.Name; 
     var n = login.localeCompare(name); 
     console.log(name); 

     if (n != 0) { 
      var eid = snapshot.val(); 
      console.log("Hello" + eid); 
     } 
     console.log(snapshot.val()); 
    }) 
}) 
+0

這不是迭代的子節點我得到的第一個節點只有「0153」'[email protected]的數據「 – joel