Aggiungendo di seguito ciò che ha funzionato per me usando i riferimenti in Firestore.
Come dicono le altre risposte, è come una chiave esterna. L'attributo di riferimento non restituisce tuttavia i dati del documento di riferimento. Ad esempio, ho un elenco di prodotti, con un riferimento userRef come uno degli attributi sul prodotto. Ottenere l'elenco dei prodotti, mi dà il riferimento dell'utente che ha creato quel prodotto. Ma non mi fornisce i dettagli dell'utente in quel riferimento. Ho usato altri back-end come servizi con puntatori prima che hanno un flag "populate: true" che restituisce i dettagli dell'utente anziché solo l'id di riferimento dell'utente, che sarebbe bello avere qui (speriamo un miglioramento futuro ).
Di seguito è riportato un codice di esempio che ho usato per impostare il riferimento, nonché ottenere la raccolta della lista dei prodotti, quindi ottenere i dettagli dell'utente dall'ID di riferimento dell'utente fornito.
Imposta un riferimento su una raccolta:
let data = {
name: 'productName',
size: 'medium',
userRef: db.doc('users/' + firebase.auth().currentUser.uid)
};
db.collection('products').add(data);
Ottieni una raccolta (prodotti) e tutti i riferimenti su ciascun documento (dettagli utente):
db.collection('products').get()
.then(res => {
vm.mainListItems = [];
res.forEach(doc => {
let newItem = doc.data();
newItem.id = doc.id;
if (newItem.userRef) {
newItem.userRef.get()
.then(res => {
newItem.userData = res.data()
vm.mainListItems.push(newItem);
})
.catch(err => console.error(err));
} else {
vm.mainListItems.push(newItem);
}
});
})
.catch(err => { console.error(err) });
Spero che questo ti aiuti