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

Firestore读取文档报docSnap.exists非函数及await语法错误求助

问题核心原因

两个报错本质是同一个根因导致的:await 关键字的使用规则错误

  • 第一个语法报错:await 只能在标记了 async 的函数内部使用,你当前的表单提交事件回调是普通函数,没有加 async 修饰,直接写 await 会被识别为非法的保留字使用。
  • 第二个类型报错:你去掉 await 之后,getDoc 方法返回的是未完成状态的 Promise 实例,而非文档快照对象,Promise 本身不存在 exists 方法,因此触发报错。
修复方案

只需要给表单提交的回调函数加上 async 修饰符即可,修复后的代码如下:

requestForm.addEventListener('submit', async (event) => {
  event.preventDefault();

  const user = auth.currentUser;
  // 先判断用户登录状态,避免user为null时读取email报错
  if (!user) {
    console.log("用户未登录");
    return;
  }
  const docSnap = await getDoc(doc(db, "users", user.email));

  if (docSnap.exists()) {
    console.log("Document data:", docSnap.data());
  } else {
    console.log("No such document!");
  }
})
额外注意

如果后续依然出现读取异常,可以先打印 user.email 的值确认是否和Firestore中users集合的文档ID完全匹配,邮箱的大小写、前后空格都会导致匹配不到文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:39:03