打印一份firebase文档



我只想打印一个firebase文档,而不想打印整个集合,我不知道如何做到这一点。目前,我的代码看起来是这样的,但它打印了整个";用户";集合,我希望能够只打印专用于所选用户的文档:

struct Users: Identifiable {
var id: String = UUID().uuidString
var code_postal: String
var creatdAt: String
var email: String
var is_new: String
var nom: String
var prenom: String
var tel: String
var ville: String
}
class UsersViewModel: ObservableObject {
@Published var users = [Users]()
private var db = Firestore.firestore()
let is_user = Auth.auth().currentUser
func fetchDate() {
db.collection("users").addSnapshotListener { (querySnapshot, error) in
guard let documents = querySnapshot?.documents else {
print("No documents")
return
}

self.users = documents.map { queryDocumentSnapshot -> Users in
let data = queryDocumentSnapshot.data()

let code_postal = data["code_postal"] as? String ?? ""
let creatdAt = data["creatdAt"] as? String ?? ""
let email = data["email"] as? String ?? ""
let is_new = data["is_new"] as? String ?? ""
let nom = data["nom"] as? String ?? ""
let prenom = data["prenom"] as? String ?? ""
let tel = data["tel"] as? String ?? ""
let ville = data["ville"] as? String ?? ""

return Users(id : .init(), code_postal: code_postal, creatdAt: creatdAt, email: email, is_new: is_new, nom: nom, prenom: prenom, tel: tel, ville: ville)
}
}
}
}

这是我打印数据库的功能:

struct ProfileView: View {
@ObservedObject private var viewModel = UsersViewModel()
var body: some View {
HStack(alignment: .top){
List(viewModel.users) { users in
VStack(alignment: .leading) {
Section(header: Text("Prenom: ")) {
Text(users.prenom)
}
Section(header: Text ("Nom : ")) {
Text(users.nom)
}
Section(header: Text ("Ville : ")) {
Text(users.ville)
}
//                        Text ("Code postal : ")
//                        Text(users.code_postal)
//                            .font(.subheadline)
//                        Text ("Téléphone : ")
//                        Text(users.tel)
//                            .font(.subheadline)
//                        Text ("Email : ")
//                        Text(users.email)
//                            .font(.subheadline)
//                        Text ("Date d'inscription : ")
//                        Text(users.createdAt)
//                            .font(.subheadline)
}
}
.navigationBarTitle("News")
}
.onAppear() {
self.viewModel.fetchDate()
}
Button(action: {
try! Auth.auth().signOut()
UserDefaults.standard.set(false, forKey: "status")
NotificationCenter.default.post(name: NSNotification.Name("status"), object: nil)
}, label: {
Text("Déconnexion")
})
}
}

感谢您的帮助

您必须获取文档本身:

db.collection("users").document("userxyz789").addSnapshotListener { (docSnapshot, error) in
...
}

或在集合中查询:

db.collection("users").whereField("userId", isEqualTo: "userxyz789").addSnapshotListener { (querySnapshot, error) in
...
}

您当前正在做的是获取整个集合。

最新更新