Firestore如何存储引用文件/如何检索它?

时间:2018-04-25 01:55:40

标签: swift firebase google-cloud-firestore

我是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!")
        }
    }

2 个答案:

答案 0 :(得分:6)

你只是错过了一步。我花了一段时间才弄明白。

首先,存储一个变量DocumentReference!

var userRef: DocumentReference!

然后,你想要创建一个指向文档ID的指针 - 从那个<创建一个DocumentReference - 这个你缺少的部分

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!")
    }
}

希望有所帮助!

答案 1 :(得分:0)

This way works perfectly for me:

let db = Firestore.firestore()
let documentRefString = db.collection("users").document(documentID)
let userRef = db.document(documentRefString.path)

Then, when you will set the data:

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!")
    }
}