根据特定值查询子节点(Swift 3、Firebase)
Posted
技术标签:
【中文标题】根据特定值查询子节点(Swift 3、Firebase)【英文标题】:Querying Child Nodes Based on a Particular Value (Swift 3, Firebase) 【发布时间】:2017-08-02 00:56:18 【问题描述】:我正在尝试传递一个电话号码(例如 1111111111)并查看它是否与我的 Firebase 数据库中的任何条目匹配。我在整理数据库和查找电话号码时遇到问题。以下是 Firebase 数据库的 JSON 代码。
"Users" :
"3SMHwMuA8HQm9yLoivxYoCtUccr1" :
"Email" : "firstname1.lastname1@gmail.com",
"First Name" : "First Name 1",
"Last Name" : "Last Name 1",
"Phone Number" : "(111) 111-1111"
,
"NvQiGzASw2QDAMcBQLx1HNzR8ZM2" :
"Email" : "firstname2.lastname2@gmail.com",
"First Name" : "First Name 2",
"Last Name" : "First Name 2",
"Phone Number" : "(222) 222-2222"
,
"RuVMfHUC8qQg8KGVJitEkzq9Tsy2" :
"Email" : "firstname3.lastname3@gmail.com",
"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")
【问题讨论】:
【参考方案1】:您缺少关于过滤哪个孩子的说明:
let phoneNoInDatabase = ref.child("Users").queryOrdered(byChild: "Phone Number").queryEqual(toValue: phoneNo_pb_int)
【讨论】:
恐怕您的解决方案不起作用。我添加了您的代码,行为仍然相同。感谢您的努力。 您似乎将电话号码作为数字保留在代码中。在数据库中,您将其存储为字符串。因此,您需要将其转换为字符串:queryEqual(toValue: "1111111111")
似乎并非如此,因为当从电话联系人列表中选择一个号码时,它总是匹配一个号码 - (333) 333-3333。此号码找到匹配项。而其他 2 个数字没有;即使它们在数据库中。以上是关于根据特定值查询子节点(Swift 3、Firebase)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Swift 在 Firebase 中使用 equalTo 查询查找子节点? [复制]
无法使用 swift 3 在 firebase 中节点特定值
如何从特定的 UICollectionViewCell 中删除 firebase 子节点 - Swift