Firestore调用getDoc查询集合时报Expected type 'Tc'错误怎么解决?
错误产生原因
- 你调用的
getDoc()是Firestore专为查询单个文档设计的API,仅接受DocumentReference(单个文档引用)类型的参数 - 你代码中通过
collection(db, 'todos')拿到的是CollectionReference(集合引用)类型的对象,传入getDoc()后类型不匹配,就触发了压缩混淆后的类型校验报错。报错信息里的Tc、Ac是Firebase SDK打包压缩后的内部类型别名,本质就是参数类型不符合要求。
解决办法
获取整个集合下的所有文档,需要调用批量查询APIgetDocs()(注意是复数形式),查询成功后遍历返回的docs数组即可拿到所有文档数据,修正后的代码如下:
const app = initializeApp(firebaseConfig); const db = getFirestore(app); async function getTodos() { try { const todoRef = collection(db, 'todos'); const todosSnapshot = await getDocs(todoRef); // 遍历快照获取所有文档数据 const allTodos = todosSnapshot.docs.map(doc => ({ id: doc.id, ...doc.data() })); console.log(allTodos); // 可选:判断集合为空的情况 if (todosSnapshot.empty) { console.log('todos集合下没有文档'); } } catch (err) { console.log(err) } }
- 如果需要监听集合的实时变化,替换
getDocs为onSnapshot即可。
内容的提问来源于stack exchange,提问作者Rohit Dhas
相关产品推荐
相关产品推荐

