Я ожидаю, что данные для поля документа будут обновлены с помощью записи setData (слияние), и это не так, несмотря на успешное завершение. UpdateData работает, но я не понимаю, почему setData не работает в этом случае.
Я выполняю следующие записи в Firestore и по следующим путям:
setData
to firstCollection / uniqueDo c - в пакетном режиме
setData
в secondCollection / uniqueDoc1 (от 1 до 5 записей в пакете) - транзакция
updateData
в thirdCollection / uniqueDo c
Никаких ошибок не выводится, все данные и синтаксис выглядят корректно, и записи № 2 плюс № 3 отражаются в данных успешно - № 1 - это тот, который этого не делает.
Любое руководство будет будьте благодарны.
Вот мой код для # 1 ...
func first() {
//oldData is not empty and is the same type as var updatedData
//oldData = [
// "a": ["name":"aName", "dateAdded": dateValue, "imageUrl": "aImageUrl"]
// "b": ["name":"bName", "dateAdded": dateValue, "imageUrl": "bImageUrl"]
// ]
guard let oldData = oldData else { return }
var updatedData: [String: NSDictionary] = [:]
updatedData = oldData
updatedData["a"] = nil
db.collection(firstCollection).document(uniqueDocName).setData(["data": updatedData],
merge: true) { error in
guard error == nil else {
print("Error:" , error)
return
}
self.runOtherFunc()
}
}