javascript - 数组未在嵌套的 firestore get 中更新
问题描述
当我解决包含 Firestore 嵌套 get 的承诺时,为什么数组没有更新,我有点困惑。
代码如下:
let userArray = [];
return new Promise(resolve => {
channelPaticipationRef
.where('channel', '==', channel.id)
.get()
.then(participationSnapshot => {
participationSnapshot.forEach(participationDoc => {
const participation = participationDoc.data();
participation.id = participationDoc.id;
if (participation.user != userId) {
usersRef
.doc(participation.user)
.get()
.then(user => {
if (user.data()) {
const userData = user.data();
userArray = [
...userArray,
{
userId: userData.id,
userFirstName: userData.firstName,
userLastName: userData.lastName,
userIsOnline: userData.isOnline,
userProfilePictureURL: userData.profilePictureURL,
userLastTimestamp: userData.lastOnlineTimestamp,
},
];
console.log(1, userArray)
}
})
.catch(error => console.log(error));
}
console.log(2, userArray)
});
console.log(3, userArray)
resolve(userArray);
});
});
在控制台中它返回
2 []
2 []
3 []
1 [{…}]
1 (2) [{…}, {…}]
并且承诺返回一个空数组
如果我使用扩展运算符推送或更新数组,为什么它没有注册?
解决方案
推荐阅读
- python - 当我在 for 循环中使用 split 函数时,它会创建一个嵌套列表,如何使它只有一个列表
- javascript - Parcel 什么都不做,不被识别为命令
- c# - 实体框架不更新位数据类型
- ios - 在 Swift 中自定义 Pull 刷新
- wordpress - Woocommerce 更改附加到可下载产品的文件
- php - 使用php在pdf中搜索文本
- twilio - 发送批量文本时,Twilio 消息服务是否会阻止“雪鞋消息”?
- java - 将设置器添加到 java spring boot 控制器类
- google-apps-script - 在 Google 表格中的多选下拉列表中添加换行符
- angular - Angular12 - 属性“类”没有初始化程序,并且没有在构造函数中明确分配。ts(2564)(属性)AddComponent.Class:字符串