javascript - 如何从 Firebase 获取价值而不是 Promise?
问题描述
我想从 Firebase 实时数据库中获取“数据价值”。你可以在下面找到我的代码:
async function getName() {
const result = await firebase.database().ref('/users/' + user.user.uid)
.once('value').
then(async function(snapshot) {
console.log("SNapshot =>");
console.log(snapshot.val().displayName); // returns "John Doe"
const result2 = await snapshot.val().displayName;
return result2;
});
return result; // returns "Promise Object"
};
它返回“承诺”。但我想获得价值而不是承诺。
我应该如何修复我的代码?
谢谢。
解决方案
您将 async/await 与 then()/catch() 的使用混为一谈。您应该选择一种语法或另一种语法,在这种情况下不要同时选择两者。您还尝试在不是承诺的情况下使用 await 。只需像这样编写您的函数:
async function getName() {
const snapshot = await firebase.database().ref('/users/' + user.user.uid).once('value')
return snapshot.val().displayName
}
并这样称呼它:
const name = await getName()
推荐阅读
- r - R中的IFELSE返回不正确的值
- python - 初学者 PyTorch:RuntimeError:大小不匹配,m1:[16 x 2304000],m2:[600 x 120]
- python - 可变结果即使在更改后也会产生结果
- r - 如何在 r shiny 中编辑表格
- python - Pygame 移动问题
- sql - 如何在 SQL Bigquery 中删除重复的主键行并分组?
- javascript - 如何在不添加迭代器的情况下修复打字稿中的迭代器丢失错误 - 角度 8
- vega - 在 vega-lite 中格式化构面/多视图标签
- html - HTML 图像不会呈现在 Outlook 中长电子邮件的底部
- c# - AutoMapper 仅映射需要的字段