2013-04-27 4 views
2

Puis-je charger Firebase mes données paresseusement? Disons que mon application consiste en un arbre avec un million de nœuds que l'utilisateur peut réduire, développer et modifier. La grande majorité de ces nœuds resteront effondrés la grande majorité du temps, donc cela n'a pas de sens de tout garder en mémoire. Pour autant que je sache, Firebase transfère tout le contenu de la base de données au client au lancement et n'est pas destiné à être utilisé d'une autre manière. Est-ce exact?Chargement paresseux de Firebase

Répondre

5

C'est incorrect. Firebase synchronise les données uniquement lorsque vous le demandez. Pour accomplir quelque chose comme ça, tout dépend de la façon dont vous stockez les données.

Par exemple, un exemple simpliste serait cette structure, ce qui permet d'obtenir le résultat souhaité:

/records/root/record1 
/records/root/record2 
/records/record1/record1-1 
/records/record2/record2-1 

Maintenant, vous ne ref.child('root_level').on('child_added'...) pour votre point de départ. Lorsqu'un noeud est développé, exécutez un child_added sur le chemin d'accès enfant.

Vous pouvez également utiliser les priorités, le stockage de tous les enregistrements dans le même chemin et le chargement que ceux que vous avez besoin en fonction de la priorité:

/records/record1 (priority null) 
/records/record2 (priority null) 
/records/record1-1 (priority 'record1') 
/records/record2-1 (priority 'record2') 

Maintenant, pour récupérer vos dossiers de racine, vous utilisez:

ref.child('records').startAt(null).endAt(null) 

Lorsqu'un nœud est développé, vous utilisez les touches suivantes:

ref.child('records').startAt(parentId).endAt(parentId)