Firestore 如何存储对文档的引用/如何检索它?
Posted
技术标签:
【中文标题】Firestore 如何存储对文档的引用/如何检索它?【英文标题】:Firestore how to store reference to document / how to retrieve it? 【发布时间】:2018-10-05 09:08:03 【问题描述】:我是 Firestore/Firebase 的新手,我正在尝试创建一个新文档,其中一个字段是 document reference
到另一个文档。我已阅读 Firebase 中的所有指南和示例,但没有找到任何内容...
此外,当我检索我创建的这个文档时,我将能够访问我在其中添加的引用中的内容。我不知道该怎么做。
这是我为创建部分尝试的一些代码
let db = Firestore.firestore()
// Is this how you create a reference ??
let userRef = db.collection("users").document(documentId)
db.collection("publications").document().setData([
"author": userRef,
"content": self.uploadedImagesURLs
]) err in
if let err = err
print("Error writing document: \(err)")
else
print("Document successfully written!")
【问题讨论】:
当你阅读文档并获得author
字段时,它应该是一个文档参考,就像你第一次放在那里的那个一样。
那么我所做的存储参考的正确方法是什么?当我得到同样的字段时,它实际上是一个Any
类型。我试图投射它但没有成功。一旦我得到它,我应该在该字段上调用什么方法来访问它指向的实际文档?
【参考方案1】:
你只是少了一步。这也花了我一段时间才弄清楚。
首先,存储一个变量 DocumentReference!
var userRef: DocumentReference!
然后,你想创建一个指向文档 ID 的指针——从那个
if let documentRefString = db.collection("users").document(documentId)
self.userRef = db.document("users/\(documentRefString)")
最后,继续将数据保存到数据库中
db.collection("publications").document().setData([
"author": userRef,
"content": self.uploadedImagesURLs
]) err in
if let err = err
print("Error writing document: \(err)")
else
print("Document successfully written!")
希望有帮助!
【讨论】:
【参考方案2】:这种方式非常适合我:
let db = Firestore.firestore()
let documentRefString = db.collection("users").document(documentID)
let userRef = db.document(documentRefString.path)
那么,什么时候设置数据:
db.collection("publications").document().setData([
"author": userRef,
"content": self.uploadedImagesURLs
]) err in
if let err = err
print("Error writing document: \(err)")
else
print("Document successfully written!")
【讨论】:
以上是关于Firestore 如何存储对文档的引用/如何检索它?的主要内容,如果未能解决你的问题,请参考以下文章
对于与用户 uid 相同的文档 ID,如何从 Firestore 中仅检索一个用户的数据?