根据搜索查询显示Firebase信息[Firebase] [Swift]

时间:2019-02-24 22:06:01

标签: swift firebase-realtime-database

我有一个Firebase数据库,通过该数据库,我试图通过5个不同的视图控制器(由UIPageViewController控制)按年龄来显示5个随机用户(包括他们的姓名和电子邮件)。

我创建了查询代码以按年龄显示用户。代码如下:

func findoutinfo(){
    let usersRef = Database.database().reference().child("Users")

    let query = usersRef.queryOrdered(byChild: "Age").queryEqual(toValue: "21")
    query.observeSingleEvent(of: .value, with: { snapshot in
        for child in snapshot.children {
            let childSnap = child as! DataSnapshot
            let dict = childSnap.value as! [String: Any]

            let name = dict["Name"] as! String
            let email = dict["email"] as! String

            print(childSnap.key, name, email)
        }
    })
}

但是,我还没有找到一种随机选择5个用户并将其信息显示在各个页面上的方法。确保所有这些都不相同。

1 个答案:

答案 0 :(得分:1)

很不幸。 Firebase无法为您提供一个随机选择孩子的简单解决方案。根据使用情况,您可能必须采用不同的方法。

如果“用户”列表不大,则可以获取所有用户,将其放入数组中,然后随机选择5个。像这样:

var selectedUsers = [[String: Any]]() 
let qtyOfUsersToSelect = 5
var users = getUsersArrayFromFirebase() // Made up function where you should fetch the Users.
for i in 1...5 {
    selectedUsers.append(users.remove(at: Int.random(0..<users.count)))
}

如果您希望数据库用户很大,那么我建议您使用Firebase函数并在后端进行处理。