Hinzufügen unter was für mich funktioniert mit Referenzen in Firestore.
Wie die anderen Antworten sagen, ist es wie ein Fremdschlüssel. Das Referenzattribut gibt jedoch nicht die Daten des Referenzdokuments zurück. Zum Beispiel habe ich eine Liste von Produkten mit einem userRef-Verweis als eines der Attribute auf dem Produkt. Die Liste der Produkte erhalten, gibt mir die Referenz des Benutzers, der dieses Produkt erstellt hat. Aber es gibt mir nicht die Details des Benutzers in dieser Referenz. Ich habe andere Back-End als Dienste mit Zeigern zuvor verwendet, die ein "populate: true" -Flag haben, das die Benutzerdetails zurückgibt, anstatt nur die Referenz-ID des Benutzers, was hier toll wäre (hoffentlich eine zukünftige Verbesserung)).
Unten ist ein Beispielcode, den ich verwendet habe, um die Referenz zu setzen, sowie die Sammlung von Produktlisten zu erhalten und dann die Benutzerdetails von der angegebenen Benutzer-Referenz-ID abzurufen.
einen Verweis auf eine Sammlung:
let data = { name: 'productName', size: 'medium' }
data.userRef = db.doc('users/' + firebase.auth().currentUser.uid);
db.collection('products').add(data);
Hier finden Sie eine Sammlung (Produkte) und alle Verweise auf jedes Dokument (Benutzerdaten):
db.collection('products').get()
.then((res) => {
vm.mainListItems = [];
res.forEach(doc => {
var newItem = doc.data();
newItem.id = doc.id;
if (newItem.userRef) {
newItem.userRef.get()
.then(res => { newItem.userData = res.data() })
.catch(err => console.error(err));
}
vm.mainListItems.push(newItem);
});
})
.catch((err) => { console.error(err) });
this helps
Bitte, können Sie mögliche Anwendungsfälle teilen? Ist es möglich Felder in dieser Referenz abzufragen? Z.B. Ich habe eine 'Freunde'-Sammlung, die alle meine Freunde auflistet (' friends/myId'). Dann referenziere ich dieses Dokument im Feld "Freunde" eines anderen Dokuments ("group/groupId"). Ich möchte nur meine Freunde anzeigen, die sich in dieser Gruppe befinden, etwa so: 'where ('friends.myId', '==', true)'. – Will
Btw, es könnte nützlich sein, die [docs] (https://firebase.google.com/docs/firestore/manage-data/add-data) zu aktualisieren, um ein Beispiel zum Hinzufügen eines Referenztyps hinzuzufügen. – Will
Ich kann keine Informationen darüber finden? Dies wird meine gesamte Datenbankstruktur verändern, ich muss mehr wissen ... – Ruben