thắc mắc [JavaScript] Nhờ các anh chị giúp đỡ về Firestore

Em đang làm bài tập đồ án có liên quan đến CSDL Firestore.
Em sử dụng kiểu reference (sinhvien ref với lophoc chẳng hạn), em lấy dữ liệu lên, nhưng chỉ lấy được các trường của collection sinhvien, còn trường ref lophoc thì trong console.log vẫn thấy nhưng khi hiển thị lên HTML thì chỉ hiện [object Promise].
Xin các đàn anh IT chỉ giáo giúp.

Edit: Em dùng JS
Do laptop đã cho bạn mượn nên em có trình bày lại ý chính của code như sau:
JavaScript:
const svArr = [];
firebase.firestore().collection('sinhvien').get().then(svSnapshot => {
    svSnapshot.forEach(doc => {
        const sv = doc.data();
        sv.lop.get().then(lSnapshot => {
            sv.lop = lSnapshot.data();
            svArr.push(sv)
        });
    });
});

// Dữ liệu vẫn hiện trong cửa sổ Console
console.log(svArr);

// Xử lý để hiện lên HTML, thì không có (empty array)

Nick này em mượn.
 
Em đang làm bài tập đồ án có liên quan đến CSDL Firestore.
Em sử dụng kiểu reference (sinhvien ref với lophoc chẳng hạn), em lấy dữ liệu lên, nhưng chỉ lấy được các trường của collection sinhvien, còn trường ref lophoc thì trong console.log vẫn thấy nhưng khi hiển thị lên HTML thì chỉ hiện [object Promise].
Xin các đàn anh IT chỉ giáo giúp.

Edit: Em dùng JS
Do laptop đã cho bạn mượn nên em có trình bày lại ý chính của code như sau:
JavaScript:
const svArr = [];
firebase.firestore().collection('sinhvien').get().then(svSnapshot => {
    svSnapshot.forEach(doc => {
        const sv = doc.data();
        sv.lop.get().then(lSnapshot => {
            sv.lop = lSnapshot.data();
            svArr.push(sv)
        });
    });
});

// Dữ liệu vẫn hiện trong cửa sổ Console
console.log(svArr);

// Xử lý để hiện lên HTML, thì không có (empty array)

Nick này em mượn.
Xử lý async thì dùng foreach không push phần tử vô mảng được nha:smile:. Dùng for of sẽ fix được
 
Chắc do foreach là sync, nên ko thể lẫn lộn sync và áync mà sao for of lại fix được nhỉ, chưa hiểu lắm
Cảm ơn anh, chạy được rồi, vụ này em mới biết, làm mất công 2 ngày nay.
The range of elements processed by forEach is set before the first call to callbackfn. Elements which are appended to the array after the call to forEach begins will not be visited by callbackfn. If existing elements of the array are changed, their value as passed to callback will be the value at the time forEach visits them; elements that are deleted after the call to forEach begins and before being visited are not visited.
Link tham khảo: https://262.ecma-international.org/5.1/#sec-15.4.4.18
 
Back
Top