เพิ่มด้านล่างสิ่งที่ทำงานสำหรับฉันโดยใช้การอ้างอิงใน Firestore
ในขณะที่คำตอบอื่น ๆ บอกว่ามันเหมือนกุญแจต่างประเทศ แอตทริบิวต์การอ้างอิงไม่ส่งคืนข้อมูลของเอกสารอ้างอิงแม้ว่า ตัวอย่างเช่นฉันมีรายการผลิตภัณฑ์ที่มีการอ้างอิง userRef เป็นหนึ่งในคุณลักษณะของผลิตภัณฑ์ รับรายการผลิตภัณฑ์ให้ฉันอ้างอิงของผู้ใช้ที่สร้างผลิตภัณฑ์นั้น แต่มันไม่ได้ให้รายละเอียดของผู้ใช้ในการอ้างอิงนั้น ฉันใช้แบ็คเอนด์อื่น ๆ เป็นบริการที่มีพอยน์เตอร์ก่อนหน้านี้ที่มีธง "populate: true" ที่ให้รายละเอียดผู้ใช้กลับมาแทนที่จะเป็นเพียง id อ้างอิงของผู้ใช้ซึ่งจะดีมากหากได้มาที่นี่ )
ด้านล่างนี้คือตัวอย่างรหัสที่ฉันใช้ในการตั้งค่าการอ้างอิงรวมถึงการรวบรวมรายการผลิตภัณฑ์จากนั้นรับรายละเอียดผู้ใช้จากรหัสอ้างอิงผู้ใช้ที่ระบุ
ตั้งค่าการอ้างอิงในคอลเล็กชัน:
let data = {
name: 'productName',
size: 'medium',
userRef: db.doc('users/' + firebase.auth().currentUser.uid)
};
db.collection('products').add(data);
รับคอลเล็กชัน (ผลิตภัณฑ์) และการอ้างอิงทั้งหมดในแต่ละเอกสาร (รายละเอียดผู้ใช้):
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) });
หวังว่านี่จะช่วยได้