So überprüfen Sie, ob bei Verwendung von Echtzeitaktualisierungen ein Cloud-Firestore-Dokument vorhanden ist

75

Das funktioniert:

db.collection('users').doc('id').get()
  .then((docSnapshot) => {
    if (docSnapshot.exists) {
      db.collection('users').doc('id')
        .onSnapshot((doc) => {
          // do stuff with the data
        });
    }
  });

... aber es scheint ausführlich. Ich habe es versucht doc.exists, aber das hat nicht funktioniert. Ich möchte nur überprüfen, ob das Dokument vorhanden ist, bevor ich Echtzeit-Updates abonniere. Dieser erste Anruf scheint ein verschwendeter Anruf bei der Datenbank zu sein.

Gibt es einen besseren Weg?

Stewart Ellis
quelle
Versuchen Sie ein Instert / Update durchzuführen oder?
DauleDK
3
Es ist jetztdb.collection('users').doc('id').ref.get()
Galki

Antworten:

133

Ihr anfänglicher Ansatz ist richtig, aber es kann weniger ausführlich sein, die Dokumentreferenz einer Variablen wie der folgenden zuzuweisen:

const usersRef = db.collection('users').doc('id')

usersRef.get()
  .then((docSnapshot) => {
    if (docSnapshot.exists) {
      usersRef.onSnapshot((doc) => {
        // do stuff with the data
      });
    } else {
      usersRef.set({...}) // create the document
    }
});

Referenz: Holen Sie sich ein Dokument

Exzellenz Ilesanmi
quelle
2
Du rettest meinen Tag. Vielen Dank!
Abner Escócio