2017-08-02 83 views
0

我試圖傳遞一個電話號碼(例如1111111111),並查看它是否與我的Firebase數據庫中的任何條目匹配。我在整理數據庫並查找電話號碼時遇到問題。以下是Firebase數據庫的JSON代碼。基於特定值查詢子節點(Swift 3,Firebase)

{ 
    "Users" : { 
    "3SMHwMuA8HQm9yLoivxYoCtUccr1" : { 
     "Email" : "[email protected]", 
     "First Name" : "First Name 1", 
     "Last Name" : "Last Name 1", 
     "Phone Number" : "(111) 111-1111" 
    }, 
    "NvQiGzASw2QDAMcBQLx1HNzR8ZM2" : { 
     "Email" : "[email protected]", 
     "First Name" : "First Name 2", 
     "Last Name" : "First Name 2", 
     "Phone Number" : "(222) 222-2222" 
    }, 
    "RuVMfHUC8qQg8KGVJitEkzq9Tsy2" : { 
     "Email" : "[email protected]", 
     "First Name" : "First Name 3", 
     "Last Name" : "Last Name 3", 
     "Phone Number" : "(333) 333-3333" 
    } 
    } 
} 

這是我寫的代碼。它沒有給出正確的結果。

phoneNumber: Int = 1111111111 
ref = Database.database().reference() 
let phoneNoInDatabase = ref.child("Users").queryEqual(toValue: phoneNo_pb_int) 
let phoneNoInDatabaseInt = Int(phoneNoInDatabase.components(separatedBy: CharacterSet.decimalDigits.inverted).joined()) 
if phoneNoInDatabase_int == phoneNo_pb_int { 
    // Success! 
    print("User Found") 
} 
else { 
    // Error! 
    print("User not Found") 
} 

回答

0

您缺少過濾什麼孩子的指令:

let phoneNoInDatabase = ref.child("Users").queryOrdered(byChild: "Phone Number").queryEqual(toValue: phoneNo_pb_int) 
+0

恐怕您的解決方案沒有奏效。我添加了你的代碼,行爲仍然是一樣的。感謝你的付出。 –

+0

您似乎將電話號碼保留爲代碼中的數字。在數據庫中,您將其存儲爲字符串。所以你需要將它轉換爲一個字符串:'queryEqual(toValue:「1111111111」)' –

+0

這似乎並不是這種情況,因爲它總是匹配一個數字 - (333)333-3333當它從電話聯繫人列表。這個數字找到一個匹配。而其他兩個數字則不然。即使他們在數據庫中。 –