Firebase 9.0访问数据库报错:db未定义及collection参数异常问题
Firebase 9 Firestore 实例配置错误解决方案
两个报错的根因都是没有传入符合要求的参数:collection()第一个参数必须是初始化完成的Firestore实例,不能直接填写项目ID字符串。
1. 配置Firebase初始化文件
在项目的Firebase工具文件(如src/utils/firebase.utils.js)中完成初始化并导出Firestore实例:
// 导入Firebase 9 模块化API import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore"; import { getAuth } from "firebase/auth"; // 替换为你自身项目的Firebase配置,可在Firebase控制台项目设置页获取 const firebaseConfig = { apiKey: "你的项目apiKey", authDomain: "你的项目authDomain", projectId: "crwn-db-ff8b4", // 对应你截图里的项目ID storageBucket: "你的项目storageBucket", messagingSenderId: "你的项目messagingSenderId", appId: "你的项目appId" }; // 初始化Firebase应用 const app = initializeApp(firebaseConfig); // 初始化并导出Firestore实例,就是你需要的db变量 export const db = getFirestore(app); // 导出身份验证实例供登录功能使用 export const auth = getAuth(app);
2. 业务代码引入db实例
在写createUserProfileDocument函数的文件顶部导入配置好的db:
import { db } from '你的firebase配置文件相对路径'; import { collection, getDocs } from 'firebase/firestore';
3. 修复后的函数代码
export const createUserProfileDocument = async(userAuth, aditionalData) => { if (!userAuth) return; const querySnapshot = await getDocs(collection(db, 'users')); querySnapshot.forEach((doc) => { // 原代码直接拼接对象会显示[object Object],改成逗号分隔打印完整数据 console.log(`${doc.id} => `, doc.data()); }); };
内容的提问来源于stack exchange,提问作者Uken
相关产品推荐
相关产品推荐

