Pergunta

Minha pergunta é um acompanhamento para Este tópico. Eu amo a simplicidade e o desempenho da Firebase do que vi até agora.

Pelo que entendi, o Firebase.js sincroniza os instantâneos de dados do servidor em um objeto na memória JavaScript. No entanto, atualmente não há funcionalidade para armazenar esses dados para o disco.

Como resultado:

  1. Os aplicativos devem ter uma conexão quando iniciam, portanto, não há acesso offline verdadeiro.
  2. A largura de banda é desperdiçada toda vez que um aplicativo inicia re-transmitindo todos os dados anteriores.

Como os dados do instantâneo estão na memória como um objeto JavaScript, deve ser bastante trivial seriar como JSON e salvá -lo no LocalSorage, para que o estado de aplicação exato possa ser carregado na próxima vez que o aplicativo for iniciado, online ou não. Mas, como o código Firebase.js é minificado e enigmático, não tenho idéia de onde procurar.

Pouchdb Lida com isso muito bem em um back -end do CouchDB. (Mas falta o tempo de resposta rápido e a simplicidade da Base Fire.)

Então, minhas perguntas são:

1. Quais dados eu precisaria para serializar para salvar um instantâneo no LocalSorage? Como posso carregar isso de volta na Firebase quando o aplicativo iniciar?

2. Onde posso baixar o código-fonte do Dev original não minificado para o FireBase.js?

(A propósito, dois recursos que ajudariam a Base Firebase a explodir a concorrência fora da água: o cache off -line e o mapa reduzem.)

Foi útil?

Solução

O cache off-line e a funcionalidade do tipo Reduce estão em desenvolvimento. O Firebase.js A fonte está disponível aqui Para Dev e Debugging.

Você pode serializar em serializar um instantâneo localmente usando exportVal Para preservar todos os dados prioritários. Se você não estiver usando prioridades, um valor simples serve:

var fb = new Firebase(URL);
fb.once('value', function(snapshot) {
   console.log('values with priorities', snapshot.exportVal());

   console.log('values without priorities', snapshot.val());
});

Mais tarde, se o Firebase estiver offline (use .info/conectado Para ajudar a determinar isso) quando seu aplicativo é carregado, você pode ligar .definir() Para colocar esses dados de volta na base de fogo local. Quando/se o Firebase estiver online, ela será sincronizada.

No entanto, isso é realmente adequado apenas para dados estáticos que apenas uma pessoa acessará e mudará. Considere, por exemplo, o Fallout se eu baixar os dados, mantenha -os localmente por uma semana e é modificado por vários outros usuários durante esse período, então carrego meu aplicativo offline, faço uma pequena alteração e depois online. Minhas mudanças obsoletas se afastariam de todo o trabalho realizado no meio.

Existem muitas maneiras de lidar com isso-resolução de conflito, usando regras de segurança e atualizações/contadores de data e hora para detectar dados obsoletos e impedir regressões-mas esse não é um caso simples e precisa de uma consideração profunda antes de seguir essa rota.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top