2017-08-02 66 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当它从电话联系人列表。这个数字找到一个匹配。而其他两个数字则不然。即使他们在数据库中。 –