При выполнении от transaction
до firestore
моя первоначальная операция чтения завершается с ошибкой всей транзакции со следующей ошибкой: "nilError".
Просто любопытно, если вы не можете завершить transaction
, если документссылка не существует в первую очередь?Не удалось найти четкого ответа в документах для transaction
в iOS
.
Я надеялся, что чтение было фактически нулевым, если ссылка на документ в настоящее время не существует, чтобы впоследствии выполнить setData
по сравнению с updateData
операцией записи.
var db = Firestore.firestore()
db.runTransaction({ (transaction, errorPointer) -> Any? in
var document: DocumentSnapshot
do {
try document = transaction.getDocument(self.db.document("path/nestedPath"))
} catch let fetchError as NSError {
//Errors here.
errorPointer?.pointee = fetchError
return nil
}
if let documentData = document.data() {
transaction.updateData([x: y], forDocument: db.document("path/nestedPath"))
}
else {
transaction.setData([x : z], forDocument: db.document("path/nestedPath"))
}
return nil
})
{ (object, error) in
if let error = error {
print("Transcation Completion Error: \(error)")
} else {
print("Transaction Succeeded!")
}
}