2017-10-11 5 views
1

hier ein Bild meiner Daten ist: enter image description hereFirebase Wolke Firestor Abfrage findet nicht mein Dokument

Ich versuche, das Dokument zu erhalten. Dies funktioniert:

var docRef = db.collection('users').doc('jPDKwHyrFNXNTFI5qgOY'); 
docRef.get().then(function(doc) { 
    if (doc.exists) { 
    console.log("Document data:", doc.data()); 
    } else { 
    console.log("No such document!"); 
    } 
}).catch(function(error) { 
    console.log("Error getting document:", error); 
}); 

Es gibt:

enter image description here

D.h., wenn ich das Dokument der Schlüssel weiß, dass ich das Dokument erhalten.

funktioniert das nicht:

db.collection('users').where('uid', '==', 'bcmrZDO0X5N6kB38MqhUJZ11OzA3') 
.get().then(function(querySnapshot) { 
    if (querySnapshot.exists) { 
    console.log(querySnapshot.data); 
    } else { 
    console.log("No such document!"); 
    } 
}) 
.catch(function(error) { 
    console.log("Error getting document: ", error); 
}); 

Es gibt nur No such document! Was mit meiner Anfrage falsch ist?

+0

Bitte markieren Sie mit den Sprachen für Code verwendet. Das ist JavaScript. – tadman

Antwort

3

Der Unterschied in Ihren beiden Anfragen ist, dass Sie im ersten Fall ein Dokument abrufen, das Ihnen eine DocumentSnapshot, die die exists Eigenschaft und die data() Methode hat.

Im zweiten Fall machen Sie eine Abfrage, die Ihnen eine QuerySnapshot gibt, die anders behandelt werden muss als DocumentSnapshot. Anstelle eines einzelnen Dokuments erhalten Sie eine Liste/Sammlung von Dokumenten. Sie können überprüfen, ob die Daten abgerufen wurde die empty oder size Eigenschaften verwendet wird, und dann die Ergebnisse gehen durch die forEach-Methode oder der docs Array durchlaufen:

db.collection('users').where('uid', '==', 'bcmrZDO0X5N6kB38MqhUJZ11OzA3') 
.get().then(function(querySnapshot) { 
    if (querySnapshot.size > 0) { 
    // Contents of first document 
    console.log(querySnapshot.docs[0].data()); 
    } else { 
    console.log("No such document!"); 
    } 
}) 
.catch(function(error) { 
    console.log("Error getting document: ", error); 
}); 
+0

Danke, aber es funktioniert immer noch nicht. Mit Ihrem Code bekomme ich diese Fehlermeldung: "NOT_FOUND, Dieses Dokument existiert nicht. Überprüfen Sie doc.exists, um sicherzustellen, dass das Dokument vor dem Aufruf von doc.data() existiert." Ich habe versucht, "console.log (querySnapshot.exists);" und bin "undefined" zurück gekommen. Es hört sich so an, als wäre meine Anfrage schlecht. Irgendwelche Ideen? –

+0

Wenn Sie die 'QuerySnapshot' -Dokumentation, mit der ich verlinkt bin, auschecken, werden Sie feststellen, dass sie keine' exists'-Eigenschaft hat, so dass sie immer undefiniert ist. Ich habe einen kurzen Artikel zusammengestellt, der einige Dinge klären könnte: https://medium.com/@scarygami/cloud-firestore-quicktip-documentsnapshot-vs-querysnapshot-70aef6d57ab3 – Scarygami

+0

Das funktioniert! Ich habe Ihren Medium-Artikel aufgewertet, es war sehr klar. –

Verwandte Themen