Firebase Offline Store - Consulta não retornando alterações na loja online
Estou a usarFirebase
com a capacidade offline definida como true.
let ref = FIRDatabase.database().referenceWithPath(“my data”).child(“my users id”)
scoresRef.keepSynced(true)
Esse caminho também mantém Synced configurado como true, pois, sem isso, as alterações no banco de dados não são vistas no aplicativo imediatamente, pois ele está usando o cache local.
Tenho outro nó / caminho de nível superior no meu aplicativo que desejo pesquisar - contendo outros usuários.
Quero usar uma consulta SingleEvent e encontrar um endereço de e-mail. Estou fazendo isso via
studios.queryOrderedByChild("email").queryEqualToValue(email).observeSingleEventOfType(.Value, withBlock: { snapshot in // etc
Consigo encontrar o nó, mas continuo recebendo a versão em cache local e não a mais recente na loja online do firebase.
Se eu fizer algumas alterações no nó on-line, não as recupero novamente na busca.
Se eu alterei minha busca para um tipo de monitor, ou seja,
studios.queryOrderedByChild("email").queryEqualToValue(email).observeEventType(.Value, withBlock: { snapshot in // etc
Pego o nó do cache local primeiro e depois a versão atualizada online também.
Prefiro usar a busca SingleEvent, mas não quero monitorar o nó inteiro dos usuários com keepSynced, pois é um nó de alto nível e não quero manter todos esses dados localmente, pois não estão diretamente relacionados ao usuário .
Uma correção que encontrei antes da consulta única foi adicionar .keepSynced (true) e, no bloco de conclusão, adicionar .keepSynced (false). Não sei ao certo quanto do nó foi baixado e foi possível usar a busca do monitor em vez do singleEvent.
Devo apenas usar o monitorEvent ou existe uma maneira melhor de usar o SingleEventFetch que vá para a loja online e em vez de apenas retornar meu nó local.
PS Estou online e isso é confirmado via
var connectedRef = FIRDatabase.database().referenceWithPath(".info/connected")
connectedRef.observeEventType(.Value, withBlock: { snapshot in
let connected = snapshot.value as? Bool
if connected != nil && connected! {
println("Connected")
} else {
println("Not connected")
}
})
obrigado