Firebase возвращает частичный снимок вместо полного снимка объекта - PullRequest
0 голосов
/ 11 июня 2019

Я использую базу данных Firebase в реальном времени в проекте iOS. Происходит то, что я не могу объяснить. У меня есть таблица пользователей с пользователями, каждый пользователь имеет много разных полей и выглядит примерно так:

{
 "first_name": "User First Name",
 "last_name": "User Last Name",
 "age": 10 
}

Но я вижу странное поведение, которое не могу объяснить. Когда я подписываюсь, чтобы наблюдать объект или наблюдатьSingleEvent, используя тип события .value, я получаю только first_name, а не полный объект. Если я иду к консоли Firebase и вручную изменяю last_name, я получаю first_name и last_name, но снова я не получаю полный объект.

Я не знаю, что еще попробовать ... Я начинаю думать, что это ошибка кеша в Firebase iOS.

Моя конфигурация выглядит так:

let database = Database.database()
database.isPersistenceEnabled = true

let path = "/users/uuid"
let reference = Database.database().reference().child(path)
reference.keepSynced(true)

refHandle = reference.observe(.value, with: { (snapshot) in
  let postDict = snapshot.value
})

Любая подсказка?!

UPDATE: Я создал другое приложение, которое подключается к той же базе данных и извлекает объект при сбое в исходном приложении, и я правильно получаю объект.

Отвечая на комментарий Джея:

  • Я не получаю полный объект, даже если я вижу полный объект в веб-консоли.
  • Я, конечно, делаю let postDict = snapshot.value as? [String: Any] ?? []
  • Также я добавил для отладки snapshot.childrenCount, и он не возвращает все ключи от объекта. Я получаю только 1, то есть first_name
  • В маршрут добавлено наблюдение: /users/uuid/age и оно пустое. .exists() возвращает false.
  • Также проверил, правильно ли я removeObserver, когда я выскакиваю контроллер вида, который делает наблюдение, и он правильно удален.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...