从firebase获取用户数据?

Posted

技术标签:

【中文标题】从firebase获取用户数据?【英文标题】:Fetching user's data from firebase? 【发布时间】:2017-01-24 16:08:05 【问题描述】:

目前我正在以这种方式显示用户的联系人

 ref.observe(.value, with:  snapshot in



        var newItems: [Contacts] = []

        for item in snapshot.children 
            let contact = Contacts(snapshot: item as! FIRDataSnapshot)
            newItems.append(contact)
        

        // filter the data here
        let userID = FIRAuth.auth()?.currentUser?.email

        let itemsMatching  = self.items.filter 
            $0.addedByUser == userID
        




        self.items = newItems
        let sortedNames = itemsMatching.sorted  $0.lastName < $1.lastName 
        self.tableView.reloadData()

    )

如何仅显示与 addedByUser 列中具有相同电子邮件的用户? 当您创建新联系人时,它会自动将您的电子邮件值分配给 addedByUser。 因此,例如,如果我从帐户 show@mycontact.com 添加联系人,它将仅显示具有附加值的联系人:“show@mycontact”

【问题讨论】:

【参考方案1】:

更新的答案 - 有两个选项:-)

    let ref = FIRDatabase.database().reference(withPath: "contacts")

    var newItems : [ContactItem] = []

    ref.observe(.value, with:  snapshot in

        for item in snapshot.children
        
            let item = ContactItem(snapshot: item as! FIRDataSnapshot)
            newItems.append(item)
        

        let userID = FIRAuth.auth()?currentUser?.email

        let itemsMatching  = newItems.filter
        
            $0.addedByUser == userID
        

        let sortedNames = itemsMatching.sorted  $0.lastName < $1.lastName 

        print(sortedNames)
    )

另一方面,鉴于您无论如何都在迭代快照,您总是可以选择简单的方法

    let ref = FIRDatabase.database().reference(withPath: "contacts")

    var newItems : [ContactItem] = []
    let userID = FIRAuth.auth()?currentUser?.email

    ref.observe(.value, with:  snapshot in

        for item in snapshot.children
        
            let item = ContactItem(snapshot: item as! FIRDataSnapshot)
            if item.addedByUser == userID
            
                newItems.append(item)
            
        

        let sortedNames = newItems.sorted  $0.lastName < $1.lastName 

        print(sortedNames)
    )

【讨论】:

多么奇怪。当然对我有用。愚蠢的问题 - 但您能否确认您在 $0 上确实有一个字段 addedByUser,当然您已将 self.myEmailAddress 更改为您自己的变量? 我发布了编辑后的代码.. 并尝试打印用户 ID 并打印当前用户邮件@Russell

以上是关于从firebase获取用户数据?的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 从 Firebase 获取用户数据

如何快速从 firebase 获取用户的特定数据?

从firebase数据库flutter中的uid获取用户数据

试图快速从firebase数据库中获取用户

使用用户 ID 从 Firebase 获取数据

如何从 Firebase 数据库中获取经过身份验证的用户?