我目前被困在读取数据,来自进口的aprc函数. 下面是我的forEach函数,它根据当前登录的用户从users集合中获取doc,然后它获取cart字段,该字段是数组,接下来是forEach,它将doc.data()对象推入数组,最后它返回该数组:
export async function readUserCartData(userId){
const userSnap = await getDoc(doc(db,"users",userId));
let cartItemsData=[];
if (userSnap.exists()){
let productIdArray = userSnap.data().cart;
productIdArray.forEach(product => {
let q = query(productsColRef,where('__name__','==',product));
onSnapshot(q,(snapshot)=>{
snapshot.docs.forEach(doc =>{
cartItemsData.push(doc.data());
});
});
});
return cartItemsData;
}else{
return Promise.reject(Error(`No such document: ${coll}.${id}`));
}
}
我在这里处理这个函数:
onAuthStateChanged(auth,(user)=>{
if(user){
userId = user.uid;
console.log(userId);
// readUserData(userId);
readDocumentById("users",userId).then(data=>{
userData = data;
DisplayDeliveryAddress(userData.address.street,userData.address.city,userData.address.postCode);
});
readUserCartData(userId).then(data=>{
console.log(`typeof(data):${typeof(data)}`);
console.log(data);
});
}
});
我对它无能为力.我试了data = Array(data);
和console.log(data[0].price);
,但它显示"未定义".我想readUserCartData
有问题,但我找不到任何解决方案.