阅读 firebase 集合中的文档
Posted
技术标签:
【中文标题】阅读 firebase 集合中的文档【英文标题】:Read document in firebase collection 【发布时间】:2020-06-27 15:45:40 【问题描述】:我有一个将数据添加到集合中的 firestore 函数:
func blockUser(userId: String)
Firestore.firestore().collection("blocked").document(Auth.auth().currentUser!.uid).collection("userBlocked").document(userId).setData([:])
工作正常,创建一个类似(如预期)的结构:
并在 userBlocked 集合中添加一个已被阻止的用户 ID,如下所示:
我正在尝试使用以下内容检索 userBlocked:
Firestore.firestore().collection("blocked").document(Auth.auth().currentUser!.uid).collection("userBlocked").getDocuments(snapshot,error) in
guard let snap = snapshot else
print("error getting blocked users")
return
//var blockedUsers = [User]()
for document in snap.documents
let dict = document
print("printing blocked user - \(dict)")
在我得到的日志中:
printing blocked user - <FIRQueryDocumentSnapshot: 0x6000015c3610>
我正在尝试检索每个被阻止的用户?但似乎无法获取每个用户ID,它应该返回d8j5fU8rinUcAEZyNZ5qAIzoa1j2
【问题讨论】:
尝试打印dict.data()
【参考方案1】:
您将不得不编写代码以从传递给您的回调的QuerySnapshot 中获取文档数据。我建议从documentation 开始。
在您的代码中,snap
是 QuerySnapshot,document
是 QueryDocumentSnapshot。您可以从链接的 API 文档中看到 QueryDocumentSnapshot 有一个 data() 方法,可以将文档数据作为字典获取。
但是,您没有在文档中写入任何字段,因此字典将为空。如果要文档的ID,可以使用document.documentID
。
【讨论】:
那行得通,有没有更好的方法来保存数据?因为我只需要保存用户 ID 并且字典将为空它只会有用户 ID 如果这对你有用,那么没有别的事可做。以上是关于阅读 firebase 集合中的文档的主要内容,如果未能解决你的问题,请参考以下文章
孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档
使用 Vuex 操作 Firebase 集合中的文档 [Vuex/Vuexfire]
如何在 Swift Firebase 中更新一个集合中的所有文档
Uncaught FirebaseError: Firebase: No Firebase App '[DEFAULT]' has been created - 在 vue.js 中调用 Fireba