Swift - 从随机创建的文档 ID 中获取字段(Firestore)

Posted

技术标签:

【中文标题】Swift - 从随机创建的文档 ID 中获取字段(Firestore)【英文标题】:Swift - get field from randomly created document ID (Firestore) 【发布时间】:2019-12-08 20:51:57 【问题描述】:

在我的应用程序中,用户可以注册并通过这样做我还保存firstnamelastnameuid

这就是 Firestore-Database 的样子:

我想访问用户lastname,但我不知道如何访问,因为Document-ID 是在注册过程中随机创建的。

Auth.auth().createUser(withEmail: email, password: password)  (result, err) in

            //check for errors
            if let err = err 
                self.view.endEditing(true)
                self.showError(err.localizedDescription)

            else 

                //user was created successfully; store first and last name
                let db = Firestore.firestore()

                db.collection("users").addDocument(data: ["firstname":firstName, "lastname": lastName, "uid": result!.user.uid])  (error) in

                    if error != nil 
                        self.showError("Error saving user data")
                    
                

                //transition to home
                self.transitionToHome()
            

【问题讨论】:

【参考方案1】:

要在 Firestore 中获取文档,您需要知道以下两件事之一:

    文档的完整路径,包括集合的名称和文档的 ID(以及任何嵌套的子集合和文档 ID) 有关该文档中数据的某些信息,例如,其中一个字段的值。

如果您不知道其中任何一个,那么您所能做的就是获取集合中的所有文档,并尝试通过查看集合中的所有内容来找出您想要的内容。

底线是,如果您不知道哪个文档属于哪个用户,您就会陷入困境。您应该将用户的 ID 存储在文档中,或者作为文档本身的 ID,以便您以后可以使用它来查找该文档。

我建议使用 Firebase Auth 用户 ID 作为文档的 ID。这是非常常见的。不要用addDocument用随机ID写,use setData用你知道的ID。

Firestore 无法随时知道您想要哪个文档,除非您为其提供一种查找文档的方法。

【讨论】:

正如您所说,我通过使用 setData 和 Firebase Auth 用户 ID 使其正常工作。谢谢:)

以上是关于Swift - 从随机创建的文档 ID 中获取字段(Firestore)的主要内容,如果未能解决你的问题,请参考以下文章

如何从Swift中的Cloud FireStore Firebase访问特定字段

从 Swift (3.1) 表格视图中动态创建的单元格获取有序的文本字段数据

如何在 swift iOS Firestore 中获取单元格文档 ID?

ElasticSearch 中的随机文档

如何快速从文件夹中获取随机图像?

Firestore - 如何在将文档添加到集合后获取文档 ID