Firestore获取集合数据报错:TypeError: collection不是函数
解决Firebase Web v9中
collection is not a function错误 错误原因
这个错误的核心是没有正确从Firebase Firestore模块化SDK中导入collection函数。Web版本9采用模块化架构,所有Firestore操作函数都需要从firebase/firestore单独导入,而非直接从全局firebase对象调用。
修复步骤
导入正确的模块
确保collection、getDocs以及初始化Firestore所需的函数都从正确路径导入:// 初始化Firebase App和Firestore实例 import { initializeApp } from "firebase/app"; import { getFirestore, collection, getDocs } from "firebase/firestore"; // 你的Firebase配置 const firebaseConfig = { apiKey: "YOUR_API_KEY", authDomain: "YOUR_AUTH_DOMAIN", projectId: "YOUR_PROJECT_ID", storageBucket: "YOUR_STORAGE_BUCKET", messagingSenderId: "YOUR_SENDER_ID", appId: "YOUR_APP_ID" }; // 初始化App和Firestore实例 const app = initializeApp(firebaseConfig); const db = getFirestore(app);确保在async函数中执行查询
因为使用了await,代码必须包裹在async函数内:async function getUsers() { const querySnapshot = await getDocs(collection(db, "users")); querySnapshot.forEach((doc) => { console.log(doc.data()); }); } // 调用函数 getUsers();检查自定义模块的导出逻辑
如果你通过自定义模块(比如lib/firebase)封装Firebase逻辑,要确保该模块正确导出collection:// lib/firebase.js import { getFirestore, collection, getDocs } from "firebase/firestore"; // ...其他初始化代码 // 导出所需函数 export { db, collection, getDocs };业务代码中导入这些导出项:
import { db, collection, getDocs } from "./lib/firebase";
官方文档对应内容(中文翻译)
获取集合中的所有文档(Web版本9)
要从集合中获取所有文档,使用
getDocs()方法即可。示例代码如下:import { collection, getDocs } from "firebase/firestore"; const querySnapshot = await getDocs(collection(db, "users")); querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); });该代码会获取
users集合中的全部文档,并遍历每个文档打印其ID和对应数据。
内容的提问来源于stack exchange,提问作者hassan marzooq
相关产品推荐
相关产品推荐

