Я начал свое веб-приложение в angularjs 1.5 с помощью firebase 3. Теперь я хочу создать приложение IOS для своего веб-приложения. Приложение представляет собой систему часов, в которой пользователь может проверить или проверить время работы.Как я могу получить данные один раз в Firebase 3 и Swift 3 (Stopping observer)
Чтобы сделать это просто, у меня, как эту таблицу в firebase:
worktimes
-Kd4swkAQJTRjCbD0CCy
+ ----- IN | '2017-02-16 10:00:00'
+ ----- OUT | '2017-02-16 13:00:00'
случаях:
- Если Пользователь имеет "OUT" значение, создать новое рабочее время.
- Если у пользователя нет значения в «OUT», например NULL, я хочу обновить «OUT» и установить текущую временную метку.
В JS, мой код выглядит следующим образом:
var database = firebase.database();
var ref = database.ref().child('worktimes')
Запрос (Javascript):
ref
.startAt('2017-02-16 00:00:00')
.endAt('2017-02-16 23:59:59')
.orderByChild('timestamp')
.limitToLast(1)
.once('value', function(snapshot) {
// Getting data once here
})
запросов (Swift 3):
ref
.queryStarting(atValue: "2017-02-16 00:00:00")
.queryEnding(atValue: "2017-02-16 23:59:59")
.queryOrdered(byChild: "timestamp")
.queryLimited(toLast: 1) // return only the latest entry
.observe(FIRDataEventType.value, with: { (snapshot) in
if !snapshot.value is NSNull {
// work here with the data once
for child in snapshot.children {
// if I do an update here like this:
let snap = child as! FIRDataSnapshot
let dict = snap.value as! [String: AnyObject]
let id = dict["id"] as! String
let IN = dict["in"]
let OUT = dict["out"]
if(OUT == nil){
// UPDATE QUERY
// If I update here my Data, the query ends and starts again.
ref.child("-Kd4swkAQJTRjCbD0CCy").updateChildValues(["timestamp" : "2017-02-"])
} else {
// creating new worktime here..
}
} // end of for
} // end of if
})
Как я уже писал в комментарии (см. после запроса на обновление), наконец, завершение завершается, но он снова зацикливается на снимке. Я понял его, потому что данные изменили его, снова вызывает цикл.
Я попытался с
ref.removeAllObservers()
Для удаления наблюдателя. Он работал нормально, но если я попробовал после обновления Query, это не сработало. Он создает цикл без остановки. Как я могу остановить наблюдение, мне не нужно проверять наличие новых обновлений.
Заранее благодарен!
Спасибо чувак! Я уже пробовал наблюдать за сайтом, это не сработало. Но теперь я заметил в вашем комментарии, что я пропустил «из» в параметрах. Он работает сейчас! –
Отлично! Рад, что сработало для вас –