Метод setBalue в Firebase требует времени - PullRequest
0 голосов
/ 07 сентября 2018

Я использую firebase в своем приложении iOs.

Когда я использую метод setValue для обновления значения узла, обновление значения занимает около 5-10 секунд.

Как мне преодолеть эту задержку?

код

let shiftReportsRef = Database.database().reference().child(Constants.FireBase().users).child(Constants.FireBase().shiftReports).child(firebaseToken).child(cashierId.stringValue).child(todayDate).child(posPointId.stringValue).child(shiftid.stringValue)

shiftReportsRef?.observe(.value, with: { (peakHoursSnapShot) in
   self.shiftDetails = peakHoursSnapShot.value as? [String: AnyObject] ?? [:]
   let lastUpdated = Date().gmtDateTime(.dateTimeSec)
   self.shiftDetails!["lastUpdated"] = lastUpdated as AnyObject

           if self.hasUpdatedValues == false
            {
                self.updatePeakHoursAndLastUpdateDate(amount, refndedAmount, pymtType, timeSlt)
            }

            self.hasUpdatedValues = true  
 })

1 Ответ

0 голосов
/ 10 сентября 2018

Код в вопросе немного неясен относительно ожидаемого результата. Давайте пройдемся по нему ...

Первый shiftReportRef определен

let shiftReportsRef = Database.database (). Ссылки (). Ребенок (Constants.FireBase (). Пользователей) .child (Constants.FireBase (). ShiftReports) .child (firebaseToken) .child (cashierId.stringValue) .child (todayDate) .child (posPointId.stringValue) .child (shiftid.stringValue)

затем к этой ссылке добавляется наблюдатель. Наблюдателем является .value, который будет наблюдать за любыми изменениями в этом узле и возвращать их в моментальном снимке через событие

shiftReportsRef?.observe(.value

Но затем, когда происходит первое событие и выполняется код в замыкании, данные в этом месте перезаписываются

shiftReportsRef?.setValue(self.shiftDetails)

, который затем вызывает другое событие .value, поэтому перезаписывает узел снова (я думаю, вы можете видеть, куда это идет). Снова и снова.

Так что это не совсем ответ, потому что мы не знаем ожидаемого результата, но, вероятно, именно поэтому в приложении возникают задержки.

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