javascript - 从 Firebase 读取
问题描述
我对 Firebase 和 JS 本身也很陌生,这不是最容易理解的事情。
因此,我有一个 Firebase 实时数据库,其中包含虚拟“用户”配置文件,每个配置文件都包含不同的属性。
我正在尝试调用用户的属性。我设法通过以下方法实现了它:
let installDateRef = database.ref(`users/${userAccount}/installationDate`);
let lastUsedDateRef = database.ref(`users/${userAccount}/lastUsed`);
installDateRef.on('value', function(snapshot) {
installationDate.innerText = (snapshot.val());
}, function (error) {
installationDate.innerText = `Error: ${error.code}`
});
lastUsedDateRef.on('value', function(snapshot) {
lastUsedDate.innerText = (snapshot.val());
}, function (error) {
lastUsedDate.innerText = `Error: ${error.code}`
});
但是在我的应用程序中,我想显示所有用户信息,所以复制这个“.on”函数似乎有点过头了。有人说下面有这样更干净的方法
const firebasePromises = [
database.ref(`users/${userAccount}/installationDate`),
database.ref(`users/${userAccount}/lastUsed`)
];
Promise.all(firebasePromises).then(([_installationDate, _lastUsed]) => {
installationDate.innerText = (_installationDate.val());
lastUsedDate.innerText = (_lastUsed.val());
})
但我对上帝诚实不能让它发挥作用。它要么返回未定义,要么返回我的承诺 const 数组。.val() 甚至根本不起作用,说这不是一个函数。
任何关于最佳和工作实践的帮助都将非常感激。
谢谢
解决方案
@Doug Stevenson 谢谢!这正是所需要的:
const firebasePromises = [
database.ref(`users/${userAccount}/installationDate`).once('value'),
database.ref(`users/${userAccount}/lastUsed`).once('value'),
];
Promise.all(firebasePromises).then(snap => {
installationDateHTML.innerText = snap[0].val();
lastUsedDateHTML.innerText = snap[1].val();
})
推荐阅读
- html - 如何在两个标题之间适应并自动移动和缩放图像?
- php - 如何使用 PHP 显示我的多页项目?
- c# - 在 NetStandard 2.0 类库中托管 WCF 服务
- javascript - 在前端使用shopify admin api时出现CORS错误
- python - 使用 PyPdf multi_cell() 显示带重音符号的字符
- javascript - 在 Laravel 中按类别过滤数据
- pine-script - Pinescript 获取最低随机值的价格值
- regex - Perl:用于匹配和替换单词和可选句号的正则表达式
- excel - 一次性在所有 Excel 文件表上应用 VLookup 以及描述
- php - 诗篇多行关联数组注释