我需要使用收集路径添加用户记录。我正在使用以下代码:
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'以便以后查询。有想法吗?
答案 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)