【发布时间】:2020-05-20 15:08:24
【问题描述】:
高级:在 Cloud Firestore 中,我有两个集合。 fl_content 和 fl_files。在fl_content 内,我正在尝试访问fl_files。
详细说明:在 fl_content 中,每个文档都有一个名为 imageUpload 的字段。这是一组 Firebase 文档参考。 (我需要访问的fl_files 的路径。)
这是我对 fl_content 的查询,我在其中访问 imageUpload 参考:
let docRef = Firestore.firestore().collection("fl_content").document(item.id)
docRef.getDocument { (document, error) in
if let document = document, document.exists {
let property = document.get("imageUpload")
print("PROPERTY \(property!)")
}
}
这会将以下内容打印到控制台:
PROPERTY Optional(<__NSArrayM 0x60000281d530>(
<FIRDocumentReference: 0x600002826220>
)
)
有了这个文档引用数组,我需要访问 fl_files。
这是我遇到问题的部分。
尝试:
在 if let 语句中,我尝试通过将属性转换为 DocumentReference 来访问 fl_files。
let docRef = Firestore.firestore().collection("fl_content").document(item.id)
docRef.getDocument { (document, error) in
if let document = document, document.exists {
let property = document.get("imageUpload") as? DocumentReference
print("PROPERTY \(property!)")
let test = Firestore.firestore().collection("fl_files").document(property)
}
}
无法转换“DocumentReference”类型的值?到预期的参数类型“字符串”
let docRef = Firestore.firestore().collection("fl_content").document(item.id)
docRef.getDocument { (document, error) in
if let document = document, document.exists {
let property = document.get("imageUpload") as! DocumentReference
let test = Firestore.firestore().collection("fl_files").document(property[0].documentID)
print("TEST \(test)")
}
}
“DocumentReference”类型的值没有下标
let docRef = Firestore.firestore().collection("fl_content").document(item.id)
docRef.getDocument { (document, error) in
if let document = document, document.exists {
let property = document.get("imageUpload") as! DocumentReference
let test = Firestore.firestore().collection("fl_files").document(property.documentID)
print("TEST \(test)")
}
}
无法将“__NSArrayM”(0x7fff87c50980)类型的值转换为“FIRDocumentReference”(0x10f6d87a8)。 2020-02-05 12:55:09.225374-0500 数据库 1[87636:7766359] 无法将“__NSArrayM”(0x7fff87c50980)类型的值转换为“FIRDocumentReference”(0x10f6d87a8)。
越来越近了!
let docRef = Firestore.firestore().collection("fl_content").document(item.id)
docRef.getDocument(completion: { document, error in
if let err = error {
print(err.localizedDescription)
return
}
let imageUpload = document?["imageUpload"] as? NSArray ?? [""]
print("First Object \(imageUpload.firstObject!)")
})
This prints: First Object <FIRDocumentReference: 0x600001a4f0c0>
这里有两个屏幕截图可帮助说明 Firestore 数据库的外观。
最终,我需要访问 fl_files 中的 file 字段。如何从 imageUpload DocumentReference 访问它?
【问题讨论】:
-
你得到了数组。您必须对其进行迭代或对其进行索引以获取要使用的路径字符串。
-
@DougStevenson - 得到“'Any' 类型的值没有下标” - 真的很挣扎
-
在此之前将其转换为预期的类型。
-
"'DocumentReference' 类型的值没有下标"
-
如果您尝试通过DocumentReference 的属性的文档ID 访问怎么办?喜欢这个
let test = Firestore.firestore().collection("fl_files").document(property.id)
标签: swift firebase google-cloud-firestore flamelink-cms