javascript - 如何在 Firebase 中使用 onSnapshot?无法在我的应用中运行
问题描述
我制作了自己的网络应用程序(使用 vue.js)并使用 firestore 作为后端。在我的 firebase 方法中,我尝试在 firestore 中使用 onSnapshot 方法,但结果未定义。
firebase 版本是最新的(v9)。
所以我的代码在下面。
let user;
const snapshot = await onSnapshot(collection(db, "user"), (snap: any) => {
let user: any = [];
snap.docs.forEach((doc: any) => {
user.push({ ...doc.data() });
});
return user;
});
snapshot();
console.log(user);
我的 Firestore 数据很简单,如下所示。
collection: user
documet: uid(automatically made by firebase)
data:{
name:'someone name',
age:22
}
所以我期待这样的结果
{
name:'someone name',
age:22
}
但结果是“未定义”有人给我建议吗?
解决方案
该onSnapshot
函数不返回 a Promise
,因此您不能await
在其上使用。您正在寻找的是getDoc
:
const snap = await getDocs(collection(db, "user"));
let user: any = [];
snap.docs.forEach((doc: any) => {
user.push({ ...doc.data() });
});
console.log(user);
另请参阅 Firebase 文档,了解一次获取文档。
推荐阅读
- openstack - openstack 错误 CRITICAL keystone [-] 未处理错误:KeyError: 'connection'
- windows - 迭代目录中的文件 - 使用包含 % 的参数发出命令
- php - 在 url 中发布 Json 数组
- python-hypothesis - 如何在假设中设置数据帧的最小和最大长度?
- python - 在 PyQt5 中使用 cv2.imshow 和 drawpixmap 的颜色图是不同的
- xcode - Xcode 不会自动完成任何 Alamofire 方法
- python - 随着学习率变小,验证集的准确度高于 LSTM RNN 的训练集
- python - 从 for 循环到矩阵计算
- reactjs - 在反应中获取正确的数据监听 URL
- android - 如何播放默认的来电铃声......?