Я недавно переключился на Firestore в одном из моих приложений для iOS. Я пытаюсь сохранить некоторые настройки в коллекции "settings".
У меня есть следующий код:
let data = FSSettings().store() // returns [String : Any]
let db = Firestore.firestore()
let document = db.collection("settings").document(uid) // I tried this
document.setData(data)
{
error in
Swift.print(error?.localizedDescription)
}
// And this..
db.collection("settings").addDocument(data: data)
{
error in
Swift.print(error?.localizedDescription)
}
Согласно документации Firestore, это создаст документ (а также коллекцию). Но документ не создается. Я установил точку останова в строке print (), но она также никогда не вызывается.
Вот мои правила в Firestore:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
Это также должно работать, потому что я вошел в систему. Я также попробовал другой метод с использованием транзакции:
let db = Firestore.firestore()
let document = db.collection("settings").document(uid)
db.runTransaction(
{
transaction, errorPointer in
transaction.updateData(data, forDocument: document)
})
{
// Completion
object, error in
if let error = error
{
Swift.print(error.localizedDescription)
}
}
При выполнении этого оператора выводится следующая строка:
Transaction failed all retries.
Что мне не хватает? Мое приложение работает на iOS 12.0 и использует последнюю версию Firebase / Firestore (CocoaPods).
Когда я создаю документ вручную, я могу без проблем изменять значения, это только создание, которое завершается неудачей.