2017-10-15 3 views
3

Avec le nouveau Firestore de Firebase, j'ai découvert que j'avais une mauvaise connaissance des Observables.Firebase - Firestore - Combien de fois vais-je lire les documents

Mon problème est le suivant:

Je reçois des données avec db.collection ('pièce').

  1. Si je ne l'écoute pas l'observable avec un abonnement, puis-je extraire le document? (Je le pense).

  2. Pour chaque changement de "collection" de ma collection, est-ce considéré comme un "nouveau document lu" par Firestore? Si j'ai des Observables dupliqués qui renvoient db.collection ('room') dans mon application, aurai-je des appels X à la base de données Firestore ou juste un?

Merci!

Répondre

5
  1. Si je ne l'écoute pas l'observable avec un abonnement, puis-je extraire le document? (Je le pense).

Lorsque vous appelez var ref = db.collection('room'), ref est pas vraiment une observable est une référence à la collection 'room'. La création de cette référence n'effectue aucune lecture de données (à partir du réseau ou du disque). Lorsque vous appelez ref.get() ou ref.onSnapshot(), vous récupérez les documents sur le serveur.

  1. Pour chaque changement dans ma collection "chambre", est-il considéré comme un "nouveau document lu" par Firestore?

Si vous écoutez toute la collection (aucune clause where() ou .orderBy()) et vous avez un auditeur onSnapshot() actif alors oui, vous serez facturé pour un document opération de lecture à chaque fois qu'un nouveau document est ajouté, modifié ou supprimé dans la collection.

  1. Si j'ai dupliqué Observables qui retournent db.collection ('pièce') dans mon application, je vais X appelle à la base de données Firestore ou un seul?

Si vous écoutez les mêmes données en nuage FireStore deux endroits que vous ne ferez qu'un appel au serveur et être chargé pour les opérations de lecture une fois. Il n'y a aucune pénalité de coût/performance pour attacher plusieurs auditeurs à une référence.

+0

Merci pour cette réponse complète. C'est vraiment utile! Pour la troisième question: Si je définis 2 observables indépendants qui appellent à la fois 'db.collection ('room'). OnSnapshot()', sera-t-il considéré comme un appel ou deux? – Wandrille

+0

Vous ne lirez les documents qu'une seule fois, nous en informerons les deux observateurs. –

+1

Merci, maintenant je suis plus confiant avec mon code. – Wandrille