【发布时间】:2020-11-20 22:42:36
【问题描述】:
您能否查看以下内容并帮助我了解为什么我的文档无法从 Firestore 中检索到?我的代码如下:
class ContactStore : ObservableObject {
@Published var datas = [contactDataType]()
private var db = Firestore.firestore()
func fetchData() {
db.collection("Contact Details").addSnapshotListener { (querySnapshot, error) in
guard let documents = querySnapshot?.documents else {
print("No documents")
return
}
self.datas = documents.compactMap { queryDocumentSnapshot -> contactDataType? in
return try? queryDocumentSnapshot.data(as: contactDataType.self)
}
}
}
}
我的结构如下
struct contactDataType : Identifiable, Codable {
@DocumentID var id: String? = UUID().uuidString
var adno : String
var fullname : String
var firstname : String
var lastname : String
var registrationgroup : String
var priority1relation : String
var priority1fullname : String
var priority1maintelephone : String
var priority1mobile : String
var priority2relation : String
var priority2fullname : String
var priority2maintelephone : String
var priority2mobile : String
var priority3relation : String
var priority3fullname : String
var priority3maintelephone : String
var priority3mobile : String
var priority4relation : String
var priority4fullname : String
var priority4maintelephone : String
var priority4mobile : String
我可以使用以下代码检索文档,
class ContactStore : ObservableObject{
@Published var datas = [contactDataType]()
@AppStorage("selectedSchool") var selectedSchool: String = "selectedSchool"
init() {
let db = Firestore.firestore()
db.collection("School Name/\(selectedSchool/School Assets/\(**Struggling with this bit**)/Contact Details").getDocuments { (snap, err) in
if err != nil{
print((err?.localizedDescription)!)
return
}
for i in snap!.documents{
let id = i.documentID
let adno = i.get("ID") as? String ?? ""
let fullname = i.get("Full Name") as? String ?? ""
let firstname = i.get("First Name") as? String ?? ""
let lastname = i.get("Last Name") as? String ?? ""
let registrationgroup = i.get("Registration Group") as? String ?? ""
let priority1relation = i.get("Priority 1 Relation") as? String ?? ""
let priority1fullname = i.get("Priority 1 Full Name") as? String ?? ""
let priority1maintelephone = i.get("Priority 1 Main Telephone") as? String ?? ""
let priority1mobile = i.get("Priority 1 Mobile") as? String ?? ""
let priority2relation = i.get("Priority 2 Relation") as? String ?? ""
let priority2fullname = i.get("Priority 2 Full Name") as? String ?? ""
let priority2maintelephone = i.get("Priority 2 Main Telephone") as? String ?? ""
let priority2mobile = i.get("Priority 2 Mobile") as? String ?? ""
let priority3relation = i.get("Priority 3 Relation") as? String ?? ""
let priority3fullname = i.get("Priority 3 Full Name") as? String ?? ""
let priority3maintelephone = i.get("Priority 3 Main Telephone") as? String ?? ""
let priority3mobile = i.get("Priority 3 Mobile") as? String ?? ""
let priority4relation = i.get("Priority 4 Relation") as? String ?? ""
let priority4fullname = i.get("Priority 4 Full Name") as? String ?? ""
let priority4maintelephone = i.get("Priority 4 Main Telephone") as? String ?? ""
let priority4mobile = i.get("Priority 4 Mobile") as? String ?? ""
self.datas.append(contactDataType(id: id, adno: adno, fullname: fullname, firstname: firstname, lastname: lastname, registrationgroup: registrationgroup, priority1relation: priority1relation, priority1fullname: priority1fullname, priority1maintelephone: priority1maintelephone, priority1mobile: priority1mobile, priority2relation: priority2relation, priority2fullname: priority2fullname, priority2maintelephone: priority2maintelephone, priority2mobile: priority2mobile, priority3relation: priority3relation, priority3fullname: priority3fullname, priority3maintelephone: priority3maintelephone, priority3mobile: priority3mobile, priority4relation: priority4relation, priority4fullname: priority4fullname, priority4maintelephone: priority4maintelephone, priority4mobile: priority4mobile))
}
}
}
}
**因此,总的来说,我正在努力将文档 ID 传递到第二个代码中的路径中,或者使用第一个代码检索我的文档。我知道使用第一个会更好,但我真的很想将文档 ID 传递到文档路径中,而不是创建集合组查询,因为它似乎与我想做的不匹配。
我了解命名结构不太正确,应避免使用空格**
此时,我已将规则设置为所有人都可以阅读,因此我知道这不是安全问题。
问题-
-
我能否将文档 ID 传递到路径中?我不确定,虽然我已经通过 AppStorage for Selected School 进行了管理,但我找不到任何相关文档
-
收集组查询是更好的方法吗?
感谢您的任何建议。
【问题讨论】:
标签: swift firebase google-cloud-firestore