2017-08-07 62 views
0

我有一個JSON樹如何使用equalTo()查詢功能對孩子是教師數據庫陣列

{ "Teachers": 
     { 
      "Teacher_id" : { 
      "email" : "[email protected]", 
      "name" : "teacher1", 
      "Subjects" : {0 : "Maths", 
         1 : "science" 
         }, 
      "Subject_Exp-in-years" :{ 0:"Maths_2", 
             1:"Science_4" 
            } 
      }, 
      "Teacher_id" : { 
      "email" : "[email protected]", 
      "name" : "teacher2", 
      "Subjects" : {0 : "Geography", 
          1 : "science" 
         }, 
      "Subject_Exp-in-years" :{ "Geography_5", 
             "Science_1" 
            } 
      } 
} 

我怎樣才能設置誰教科學

教師的我已經使用查詢

var db_ref=firebase.database().ref(); 
    db_ref.child("Teachers").orderByChild("Subjects").equalTo("Science") 

如何通過查詢函數來檢查數據庫中的數組是否存在?

+0

您想使用firebase查詢來檢查值嗎?或者你想檢查使用數組的值? – UmarZaii

+0

創建應用時是否已知主題列表?或者,這是用戶可以在他們認爲合適的應用中輸入的東西嗎? –

+0

UmarZaii我想通過firebase方法檢查該科目是否存在於科目數組中 –

回答

0

使用.orderByChild("Subjects").equalTo("Science")時不起作用,因爲Subjects節點子節點均不等於Science。因此,爲了解決這個問題,我recomand你改變一點點這樣的數據庫結構:

{ "Teachers": 
    { 
     "Teacher_id" : { 
     "email" : "[email protected]", 
     "name" : "teacher1", 
     "Subjects" : {Maths: true, 
      science: true 
      }, 

正如你可以看到我已經改變了Subjects的兒童有:Maths: truescience: true。要檢查節點下是否存在值,只需在該節點上使用exists()函數。

希望它有幫助。

+0

感謝答案Alex,但是如果我得到科目的孩子,我如何得到老師節點。有沒有辦法使用orderByChild()從老師節點 –

+0

嗨亞歷克斯感謝您的答案。如何在Subjects節點上使用orderByChild檢索Teacher節點。 –

+0

使用上面解釋的確切數據庫結構。 –

0

您可以使用for循環來讀取數組中的每個元素。

當你逐一閱讀它們時,你可以包含if else語句來檢查你想要的值是否存在。假設值是JOHN

var index; 
var arraylist = ["a", "b", "c"]; 
for (index = 0; index < arraylist.length; ++index) { 
    if(arraylist[index] = "JOHN") { 
     console.log(arraylist[index] + "is in the array"); 
    }; 
}