Реализация и функция запроса данных в автономном режиме - база данных в реальном времени - PullRequest
0 голосов
/ 21 мая 2019

В настоящее время я записываю данные в базу данных реального времени примерно так:

function writeData {
        guard let uid = Auth.auth().currentUser?.uid else { return }
        let databaseRef = Database.database().reference().child("users/\(uid)")

        let object = [
            ...
            ] as [String: Any]

        databaseRef.setValue(object)
}

Это работает нормально, но в настоящее время я пытаюсь уменьшить вероятность потери данных, убивая приложение.В последнее время я просматривал веб-страницу и обнаружил что-то под названием: «Запрос данных в автономном режиме» со следующим кодом:

let scoresRef = Database.database().reference(withPath: "scores")
scoresRef.queryOrderedByValue().queryLimited(toLast: 4).observe(.childAdded) { snapshot in

}

Правильно ли я понимаю, что в приведенном выше примере последние 4 попытки записи данныхсохраняются до тех пор, пока не будет снова установлено соединение - как только оно будет загружено?

Если эта функция соответствует моим желаниям - как ее реализовать?Как связать его с моей writeData() функцией?К чему относятся «баллы» в приведенном выше примере?

1 Ответ

1 голос
/ 21 мая 2019

Если клиент Firebase не подключен к своим серверам, любые операции записи из этого приложения всегда ставятся в очередь клиентом Firebase. Когда соединение восстанавливается, клиент Firebase отправляет записи в очередь на сервер.

Когда вы включаете постоянство диска клиент Firebase записывает операции записи в очереди в файл на диске. Клиент Firebase также записывает любые результаты последних операций чтения в этот же файл. Таким образом, они также переживут любое завершение работы приложения и будут доступны / повторены, когда пользователь (пере) запустит приложение и установит соединение.

Код, который вы показали, никак не связан с записями в очереди. Это:

scoresRef.queryOrderedByValue().queryLimited(toLast: 4).observe(.childAdded) { snapshot in

Присоединяет слушателя / наблюдателя к scoresRef, чтобы получить 4 самых высоких балла. Если клиент подключен к серверу, это будут самые последние / самые высокие оценки. Если клиент не подключен к серверу, но имеет данные для scoresRef на диске, это будут самые последние / самые высокие оценки, поскольку клиент их видел в последний раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...