Thêm vào bên dưới những gì làm việc cho tôi bằng cách sử dụng tài liệu tham khảo trong Firestore.
Như các câu trả lời khác nói, nó giống như một khóa ngoại. Thuộc tính tham chiếu không trả về dữ liệu của tài liệu tham chiếu mặc dù. Ví dụ: tôi có một danh sách các sản phẩm, với tham chiếu userRef là một trong những thuộc tính trên sản phẩm. Lấy danh sách các sản phẩm, cho tôi tham khảo của người dùng đã tạo ra sản phẩm đó. Nhưng nó không cho tôi biết chi tiết về người dùng trong tài liệu tham khảo đó. Tôi đã sử dụng back end khác như một dịch vụ với con trỏ trước đó có cờ "popated: true" cung cấp lại chi tiết người dùng thay vì chỉ id tham chiếu của người dùng, điều này sẽ rất tuyệt vời ở đây (hy vọng là một cải tiến trong tương lai ).
Dưới đây là một số mã ví dụ mà tôi đã sử dụng để đặt tham chiếu cũng như lấy bộ sưu tập danh sách sản phẩm sau đó lấy thông tin người dùng từ id tham chiếu người dùng được cung cấp.
Đặt tham chiếu trên bộ sưu tập:
let data = {
name: 'productName',
size: 'medium',
userRef: db.doc('users/' + firebase.auth().currentUser.uid)
};
db.collection('products').add(data);
Nhận bộ sưu tập (sản phẩm) và tất cả tài liệu tham khảo trên mỗi tài liệu (chi tiết người dùng):
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) });
Hi vọng điêu nay co ich