从多个集合中为每个用户 firebase swift 获取文档

时间:2021-01-20 00:53:51

标签: swift firebase google-cloud-firestore firebase-authentication

我正在尝试从每个用户的 firestore 集合中获取文档,例如假设用户使用此电子邮件“Hola@example.com”登录,我想从名为“Hola”的集合中获取文档,如果用户登录在这封电子邮件“Hi@example.com”中,我想从“Hi”集合中获取文档,我尝试了此代码,但效果不佳。

import UIKit
import FirebaseFirestore
import Firebase

class orderTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {

 @IBOutlet var order: UITableView!

var db: Firestore!
var firstName = [String]()
var lastName = [String]()


 
override func viewDidLoad() {
  super.viewDidLoad()

    
    db = Firestore.firestore()



   let v = logInViewController()

   if  v.userNameField?.text == “Hi@example.com”  {
      
        loadData1()
          
    }
      
      if  v.userNameField?.text == “Hola@example.com”  {
        
           loadData2()
            
      }

}
     

  func loadData1() {
   
  db.collection(“Hi”).getDocuments()
        {
            (querySnapshot, err) in

            if let err = err
            {
                print("Error getting documents: \(err)");
            }
            else
            {
                var count = 0
                for document in querySnapshot!.documents {
                    count += 1
                    print("\(document.documentID) => \(document.data())");
                    
                    self.firstName.append(document.get("firstname") as? String ?? "")
                    self.lastName.append(document.get("lastname") as? String ?? "")
           }

              
            }
            self.order.reloadData()
    }
   }

      
    



   func loadData2() {
   
     db.collection(“Hola”).getDocuments()
        {
            (querySnapshot, err) in

            if let err = err
            {
                print("Error getting documents: \(err)");
            }
            else
            {
                var count = 0
                for document in querySnapshot!.documents {
                    count += 1
                    print("\(document.documentID) => \(document.data())");
                    
                    self.firstName.append(document.get("firstname") as? String ?? "")
                    self.lastName.append(document.get("lastname") as? String ?? "")
                 }

              
            }
            self.order.reloadData()
    }
   }

      

有没有简单的方法来实现它?

1 个答案:

答案 0 :(得分:0)

您可以将 Firebase 身份验证与 currentUser 属性结合使用。

let user = Auth.auth().currentUser
let email = user.email

然后使用此电子邮件获取他们的收藏:

db.collection(email).getDocuments()

阅读更多关于此here

相关问题