Agregando a continuación lo que funcionó para mí usando referencias en Firestore.
Como dicen las otras respuestas, es como una clave externa. Sin embargo, el atributo de referencia no devuelve los datos del documento de referencia. Por ejemplo, tengo una lista de productos, con una referencia de UserRef como uno de los atributos del producto. Obtener la lista de productos me da la referencia del usuario que creó ese producto. Pero no me da los detalles del usuario en esa referencia. He usado otro back-end como servicios con punteros antes que tienen un indicador "populate: true" que devuelve los detalles del usuario en lugar de solo la identificación de referencia del usuario, lo cual sería genial tener aquí (con suerte, una mejora futura )
A continuación se muestra un código de ejemplo que utilicé para establecer la referencia, así como obtener la colección de la lista de productos y luego obtener los detalles del usuario a partir de la identificación de referencia del usuario dada.
Establecer una referencia en una colección:
let data = {
name: 'productName',
size: 'medium',
userRef: db.doc('users/' + firebase.auth().currentUser.uid)
};
db.collection('products').add(data);
Obtenga una colección (productos) y todas las referencias en cada documento (detalles del usuario):
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) });
Espero que esto ayude