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

JS使用Axios调用异步函数获取MongoDB数据返回undefined解决方法

问题根因
  • 你的API封装函数getNotesFromDB没有对外返回有效结果:finally块内的return仅作用于finally的回调函数,不会作为外层async函数的返回值,所以函数执行后默认返回undefined。
  • async/await与then/catch混用的写法逻辑冗余,容易出现作用域相关的赋值、返回问题。
修复方案

1. 修改API封装文件代码

推荐直接返回axios请求实例,同时统一处理返回值和异常,不需要额外定义中间变量:

export async function getNotesFromDB(googleId) {
  try {
    const notesDB = await axios.get(url + "/note/" + googleId, { withCredentials: true });
    // 若需要直接返回业务数据,可改为 return notesDB.data
    return notesDB;
  } catch (error) {
    console.log(error);
    return null;
  }
}

如果要保留你原来的then/catch写法,只需要在await语句结束后返回answer即可:

export async function getNotesFromDB(googleId) {
  let answer;
  await axios
    .get(url + "/note/" + googleId, { withCredentials: true })
    .then((notesDB) => {
        answer = notesDB; 
    })
    .catch((error) => {
        console.log(error);
        answer = null;
    });
  // 在外层函数作用域返回结果
  return answer;
}

2. 调用逻辑校验

你当前index.jsx中的调用逻辑没有问题,修复API文件后,result就能正常拿到返回的接口数据或者异常时的null值。

内容的提问来源于stack exchange,提问作者Alon Ben Yaakov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:45:07