Adicionando abaixo o que funcionou para mim usando referências no Firestore.
Como as outras respostas dizem, é como uma chave estrangeira. O atributo de referência não retorna os dados do documento de referência. Por exemplo, eu tenho uma lista de produtos, com uma referência userRef como um dos atributos no produto. Obter a lista de produtos, fornece a referência do usuário que criou esse produto. Mas não me fornece os detalhes do usuário nessa referência. Eu usei outro back-end como um serviço com ponteiros antes, que possui um sinalizador "preencher: true" que devolve os detalhes do usuário, em vez de apenas o ID de referência do usuário, o que seria ótimo ter aqui (esperamos que uma melhoria futura )
Abaixo está um código de exemplo que eu usei para definir a referência, além de obter a lista de coleção de produtos e obter os detalhes do usuário a partir do ID de referência do usuário.
Defina uma referência em uma coleção:
let data = {
name: 'productName',
size: 'medium',
userRef: db.doc('users/' + firebase.auth().currentUser.uid)
};
db.collection('products').add(data);
Obtenha uma coleção (produtos) e todas as referências em cada documento (detalhes do usuário):
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 isto ajude