如何将Firebase v8语法的代码改写为Firebase v9版本代码
Firebase v8 转 v9 等效代码实现
你提供的v8版本代码对应的v9实现分为两种可选方案:
方案1:模块化写法(官方推荐,体积更小)
v9采用模块化导入设计,支持摇树优化,构建后体积远小于v8版本,等效代码如下:
// 导入所需核心方法 import { initializeApp } from "firebase/app"; import { getFirestore, collection, onSnapshot, addDoc } from "firebase/firestore"; // 配置项和v8完全一致,无需修改 const firebaseConfig = { apiKey: "你的APIKey", authDomain: "你的AuthDomain", projectId: "你的ProjectID", storageBucket: "你的StorageBucket", messagingSenderId: "你的MessagingSenderId", appId: "你的AppID" }; // 初始化应用、获取Firestore实例 const app = initializeApp(firebaseConfig); const db = getFirestore(app); // 1. 监听books集合的实时数据变化 const booksCollection = collection(db, "books"); onSnapshot(booksCollection, (snapshot) => { const books = snapshot.docs.map(doc => doc.data()); console.log(books); }); // 2. 向books集合新增文档 const addNewBook = async () => { await addDoc(booksCollection, { name: "Harry Potter", author: "J.K.Rowling" }); };
方案2:兼容写法(无需修改v8业务代码)
如果不想改动原有v8的业务逻辑,可以使用v9提供的兼容包,语法和v8完全一致:
// 导入兼容版依赖 import firebase from "firebase/compat/app"; import "firebase/compat/firestore"; const firebaseConfig = { // 同v8配置项 }; // 初始化逻辑和后续所有业务代码都可以直接复用v8的写法 firebase.initializeApp(firebaseConfig); const db = firebase.firestore(); db.collection('books').onSnapshot(snapshot => { console.log(snapshot.docs.map(doc => doc.data())) }) db.collection('books').add({ name: 'Harry Potter', author: 'J.K.Rowling' })
注意事项
- 模块化写法中所有操作都改为函数调用,不再使用v8的链式
db.collection().xxx写法,需要将引用实例作为第一个参数传入对应方法 - 所有用到的方法都需要从对应子包单独导入,未使用的方法不会被打包到最终产物中
内容的提问来源于stack exchange,提问作者Dipsundar Jana
相关产品推荐
相关产品推荐

