TypeScript中Firestore查询报错:Query无法赋值给DocumentReference
Firestore查询TypeScript错误解决方案
错误原因
getDoc()用于获取单个Firestore文档,仅接受DocumentReference类型参数(指向单个文档的引用)。- 你通过
query()创建的q是Query类型(多文档查询对象),类型不匹配导致TypeScript报错。
修正步骤
- 替换方法:将
getDoc()改为getDocs(),该方法专门用于执行查询并返回多文档结果。 - 移除多余await:
query()是同步创建查询对象的方法,不需要加await。 - 处理查询结果:通过遍历
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
相关产品推荐
相关产品推荐

