Dodanie poniżej tego, co działało dla mnie przy użyciu referencji w Firestore.
Jak mówią inne odpowiedzi, to jest jak klucz obcy. Atrybut referencyjny nie zwraca jednak danych dokumentu referencyjnego. Na przykład mam listę produktów z referencją userRef jako jednym z atrybutów produktu. Uzyskiwanie listy produktów daje mi odniesienie do użytkownika, który utworzył ten produkt. Ale nie podaje mi szczegółów użytkownika w tym odnośniku. Użyłem innego zaplecza jako usługi ze wskaźnikami, które wcześniej miały flagę „wypełnij: prawda”, która zwraca dane użytkownika zamiast tylko identyfikatora referencyjnego użytkownika, co byłoby fajne, aby mieć tutaj (mam nadzieję, że przyszłe ulepszenie ).
Poniżej znajduje się przykładowy kod, którego użyłem, aby ustawić referencję, a także uzyskać listę produktów, a następnie uzyskać dane użytkownika z podanego identyfikatora referencji użytkownika.
Ustaw referencję w kolekcji:
let data = {
name: 'productName',
size: 'medium',
userRef: db.doc('users/' + firebase.auth().currentUser.uid)
};
db.collection('products').add(data);
Uzyskaj kolekcję (produkty) i wszystkie odniesienia do każdego dokumentu (dane użytkownika):
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) });
Mam nadzieję że to pomoże