我只想打印一个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
...
}
您当前正在做的是获取整个集合。