Высокий уровень: В 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 я пытался доступ к fl_files путем приведения свойства в качестве 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
print("PROPERTY \(property!)")
let test = Firestore.firestore().collection("fl_files").document(property)
}
}
Не удалось преобразовать значение типа 'DocumentReference?' к ожидаемому типу аргумента 'String'
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 ..
В конечном счете, мне нужно добраться до поля file
внутри fl_files. Как я могу получить доступ к этому из изображения Upload DocumentReference
?