当前位置: 首页 > 知识库问答 >
问题:

获取Firebase用户中最小的孩子

史弘博
2023-03-14

我想在我的用户列表中找到最年轻的用户并加载他们的数据:姓名、个人资料图片和当前工作分配。我已经阅读了有关查询数据的Firebase入门,但它们的示例对我不适用,因为我的数据组织方式不同。我有一个额外的子层。

这是我在Firebase中的JSON树:

我尝试加载用户列表,然后对其进行迭代以找到最年轻的用户,但这似乎有些过头了。Firebase文档让我觉得应该能够通过Firebase方法进行查询,比如“queryOrderedByChild”或类似的方法。

我已经浏览了这里的旧文档和这里的新文档,但我仍然不知道该怎么做。

这就是我的工作流程:

该应用程序将在“成员”列表中找到最年轻的用户,并加载他们的姓名、个人资料图片、生日等。他们将从工作列表中进行选择。一旦用户从可用作业列表中选择,应用程序将从“成员”列表中加载下一个最年轻的用户,依此类推,直到所有用户都已加载并有机会选择作业。

我认为更好的工作流程是这样的:

  1. 通过使用Firebase查询获取最年轻的用户
  2. 使用该查询加载该用户(图像和名称)

我该怎么做呢?

编辑#1:我尝试过的代码

func loadExistingUsers(completion: @escaping ([[String : Any]]) -> ()) {
    var dictionary = [[String : Any]]()
    ref.child("members").observeSingleEvent(of: .value) { (snapshot: FIRDataSnapshot) in
        for child in snapshot.children {
            let snap = child as! FIRDataSnapshot
            if let value = snap.value as? [String : Any] {
                dictionary.append(value)
            }
        }
        completion(dictionary)
    }
}

然后在ViewddLoad中:

loadExistingUsers { (dictionary) in

        var youngestBirthday = 19000101
        var userName = "Sophie"

        for item in dictionary {
            let fetchedBirthday = item["birthday"] as! Int
            let fetchedName = item["firstName"] as! String

            if fetchedBirthday > youngestBirthday {
                youngestBirthday = fetchedBirthday
                userName = fetchedName
            }
        }
        print(userName,youngestBirthday)
    }

此方法返回我的用户列表中最年轻的用户,但要获得我想要的东西似乎还有很长的路要走。我必须首先从Firebase获取用户,然后解析快照,然后创建一个数组,然后对数组进行排序,然后获取用户名。我以为Firebase可以通过一个查询完成所有这些。我错了吗?

共有1个答案

陶鸿畴
2023-03-14

您可以使用以下代码获得最小的孩子:(因为您最小的日期是最大的数字,所以我使用的是最后一个日期)

ref.child("members").queryOrdered(byChild:"birthday").queryL‌​im‌​ited(toLast: 1).observeSingleEvent(of: .childAdded, with: { (snapshot) in
                        if let value = snapshot.value as? [String: Any] {
                                let name = value["firstname"] as? String
                                //you can do for other values as well
                                print(name)

                        }
                })
 类似资料:
  • 我已将Firebase的Facebook和电子邮件登录集成到我的iOS应用程序中。 不过,我只想将 Firebase 用户 ID 存储在我的 API 数据库中。 因此,在我的后端服务器(比如Ruby)中,如果我有firebase用户UID,我如何查询firebase以获得用户的姓名和电子邮件地址。 谢谢

  • 如何使用Firebase获取用户名属性,我不知道如何获取用户名、电话号码等属性,我只知道如何获取用户名属性,但不知道用户名属性,也许你可以从下面的Firebase数据库中了解。 这是我的密码

  • 在下面的代码中,如何获取被点击按钮的< code>Button位置? }

  • 问题内容: 我正在为我的Firebase应用程序构建一个管理面板,希望可以更轻松地管理用户。我希望能够通过电子邮件查找用户,然后在必要时将其删除。我了解,如果注册了用户以及他们向其注册了哪个提供程序,则fetchSignInMethods将返回一个值,但是仍然可以查询Authentication树(而非数据库树)以通过电子邮件搜索用户吗?能够从Authentication节点获取与电子邮件相关联的

  • 问题内容: 怎么做? 该问题的原标题是“ 在带有子查询的复杂查询中使用等级(@Rank:= @Rank + 1)-可以吗? ”,因为我一直在寻找使用等级的解决方案,但是现在我看到Bill所发布的解决方案是好多了。 原始问题: 我正在尝试组成一个查询,该查询将从给定定义顺序的每个组中获取最后一条记录: 表达式通常用于等级,但对我来说,在2个子查询中使用时,它看起来可疑,但仅初始化一次。这样行吗? 其

  • 接口说明 获取用户权限 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /permissions/api/team/user/v1.0.0/getUserPermissions 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN 响应字段说明 无