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

TypeScript中Firestore查询报错:Query无法赋值给DocumentReference

Firestore查询TypeScript错误解决方案

错误原因

  • getDoc() 用于获取单个Firestore文档,仅接受DocumentReference类型参数(指向单个文档的引用)。
  • 你通过query()创建的q是Query类型(多文档查询对象),类型不匹配导致TypeScript报错。

修正步骤

  1. 替换方法:将getDoc()改为getDocs(),该方法专门用于执行查询并返回多文档结果。
  2. 移除多余await:query()是同步创建查询对象的方法,不需要加await。
  3. 处理查询结果:通过遍历QuerySnapshot提取每个文档的数据及ID。

修正后的完整代码

import { collection, getDocs, query, where } from "firebase/firestore";
import { db } from "../../utils/firebaseConfig";

const getQuery = async () => {
  const userDataRef = collection(db, "userData");
  const q = query(
    userDataRef,
    where("mailID", "==", "dashashutosh1999@gmail.com")
  );

  const querySnapshot = await getDocs(q);
  const users = querySnapshot.docs.map(doc => ({
    id: doc.id,
    ...doc.data()
  }));
  
  console.log(users);
  return users;
};

// 正确处理异步函数的结果,避免打印Promise对象
getQuery().catch(err => console.error("查询失败:", err));

额外注意

直接console.log(getQuery())会打印Promise对象,需通过.then()或在异步上下文用await获取实际结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:50:40