无法引用Firestore文档路径

时间:2018-06-26 23:14:09

标签: swift firebase google-cloud-firestore

我需要使用收集路径添加用户记录。我正在使用以下代码:

var todays_date : String = ""
let dateFormatter : DateFormatter = DateFormatter()
        dateFormatter.dateFormat = "MMddyyyy"
        let date = Date()
        todays_date = dateFormatter.string(from: date)

docRef = Firestore.firestore().document("userData/scriptureTracking/users/" + user_id.replacingOccurrences(of: " ", with: "_") + "/" + todays_date)

docRef.setData(dataToSave) { (error) in
                if let error = error {
                    print("CloudFirestore Got error: \(error.localizedDescription)")
                } else {
                    print("CloudFirestore: Data has been saved!")
                }
}

以某种方式无法正确引用它。它在这一行崩溃了。如果我删除了最后一个反斜杠和'todays_date',那么它工作正常(使用docRef保存数据)。但是我需要'user_id'和'todays_date'以便以后查询。有想法吗?

1 个答案:

答案 0 :(得分:1)

这是因为您的docRef没有指向文档。

请记住,Cloud Firestore中的所有路径都遵循集合/文档/集合/文档/等的模式。

因此,如果您删除函数的最后一部分,而仅拥有:

docRef = Firestore.firestore().document("userData/scriptureTracking/users/" + user_id.replacingOccurrences(of: " ", with: "_"))

最后得到的是一个名为userData的集合,其中包含一个名为scriptureTracking的文档,其中包含一个名为users的集合,该集合具有一个与用户ID相等的文档。

如果将日期添加到该日期的末尾,则您的集合等于06292018(或其他值)。最有可能的是,您也希望在子集合中创建该文档。所以您可能想要类似...

docRef = Firestore.firestore().document("userData/scriptureTracking/users/" + user_id.replacingOccurrences(of: " ", with: "_") + "/dailyEntries/" + todays_date)