You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase实时数据库get函数返回Promise而非具体值的解决咨询

问题解决方法

你的getData函数有两个关键问题导致返回Promise而非实际数据:

  1. 虽然用了await,但没有把异步操作的结果返回给外层函数,async函数默认会返回一个Promise,没有return的话这个Promise最终resolve的值是undefined
  2. 混合使用await和.then()写法冗余,而且.then()回调里的return只对回调函数生效,不会影响外层的getData函数返回值

修正后的getData函数

const getData = async () => {
  const dbRef = ref(getDatabase());
  // 用await直接获取get操作的结果,替代.then()
  const snapshot = await get(child(dbRef, `users/${user.uid}`));
  
  if (snapshot.exists()) {
    console.log("snap", snapshot.val());
    // 直接返回用户数据,async函数会自动把这个值包装成resolved状态的Promise
    return snapshot.val();
  }
  // 可选:如果数据不存在,返回默认值比如null
  return null;
};

正确调用方式

因为getData是async函数,它的返回值始终是Promise,所以不能直接赋值,必须用以下两种方式获取数据:

方式1:在async函数内用await调用

// 比如在另一个async函数里
const fetchData = async () => {
  let check = await getData();
  console.log("check", check); // 这里会打印实际的用户数据
};
fetchData();

方式2:用.then()处理Promise

getData().then(check => {
  console.log("check", check); // 这里会打印实际的用户数据
});

内容的提问来源于stack exchange,提问作者user19898771

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:02:03