如何在同一Firebase应用中切换多个Firestore数据库
React Native中切换多Firestore数据库的实现方法
你的Firebase项目包含多个Firestore数据库,需要在React Native代码中实现数据库切换,当前默认数据库的连接代码如下:
const response = await firestore().collection(collectionId).doc(savedId).get().then((doc: any) => { console.log(doc.data(), 'doc.data()'); return doc.data(); });
你已在Node.js中实现同一项目内不同数据库ID的切换,代码示例:
const { Firestore } = require('@google-cloud/firestore'); var firestore = new Firestore({ projectId: projectId, databaseId: databaseId, keyFilename: keyFilenamePath });
以下是React Native中的实现方案:
方案一:使用Firebase v9+模块化SDK(推荐)
确保你使用的是v9.8.0及以上版本的模块化SDK,通过getFirestore方法直接指定数据库ID:
import { initializeApp } from 'firebase/app'; import { getFirestore } from 'firebase/firestore'; // 初始化Firebase应用(若未初始化) const firebaseApp = initializeApp({ // 填入你的Firebase项目配置信息 }); // 获取指定数据库ID的Firestore实例 const targetDb = getFirestore(firebaseApp, { databaseId: '你的目标数据库ID' }); // 使用该实例执行数据操作 const response = await targetDb.collection(collectionId).doc(savedId).get().then((doc) => { console.log(doc.data(), 'doc.data()'); return doc.data(); });
方案二:使用旧版兼容式SDK
如果仍在使用旧版命名空间风格的SDK(即当前代码中的firestore()调用方式),可以通过useDatabaseId方法切换数据库:
import firebase from 'firebase/compat/app'; import 'firebase/compat/firestore'; // 初始化Firebase应用 const app = firebase.initializeApp({ // 填入你的Firebase项目配置信息 }); // 获取Firestore实例并指定数据库ID const targetDb = firebase.firestore(app); targetDb.useDatabaseId('你的目标数据库ID'); // 后续数据操作使用该实例 const response = await targetDb.collection(collectionId).doc(savedId).get().then((doc: any) => { console.log(doc.data(), 'doc.data()'); return doc.data(); });
注意事项
- Firestore多数据库功能仅支持Blaze付费计划
- 必须使用v9.8.0及以上版本的Firebase SDK才能支持该特性
内容的提问来源于stack exchange,提问作者Hari Karthyk
相关产品推荐
相关产品推荐

