以编程方式更改默认firebase数据库,并在默认数据库和辅助数据库上运行相同的firebase函数

以编程方式更改默认firebase数据库,并在默认数据库和辅助数据库上运行相同的firebase函数,firebase,react-native,firebase-realtime-database,google-cloud-functions,react-native-firebase,Firebase,React Native,Firebase Realtime Database,Google Cloud Functions,React Native Firebase,背景- 我正在设置一个新功能,允许用户选择他们所在的城市,因为我的应用程序是一个公共交通应用程序。我希望城市在单独的数据库中,为此,我在firebase项目中创建了一个辅助数据库。这是一个React-Native应用程序,我正在使用React-Native firebase 问题1- 当用户选择不同的城市时,我希望该数据库成为他的默认数据库。我不知道怎么做,有人能帮忙吗 我尝试过初始化和更改数据库URL,尽管我连接了第二个DB一次,但并不是每次都这样。似乎是一个不稳定的解决方案 我发现的另一个解

背景- 我正在设置一个新功能,允许用户选择他们所在的城市,因为我的应用程序是一个公共交通应用程序。我希望城市在单独的数据库中,为此,我在firebase项目中创建了一个辅助数据库。这是一个React-Native应用程序,我正在使用React-Native firebase

问题1- 当用户选择不同的城市时,我希望该数据库成为他的默认数据库。我不知道怎么做,有人能帮忙吗

我尝试过初始化和更改数据库URL,尽管我连接了第二个DB一次,但并不是每次都这样。似乎是一个不稳定的解决方案

我发现的另一个解决方案是将url传递给每个“firebase.database(url)”,但这似乎是一个糟糕的解决方案

问题2-
由于这两个城市的应用程序完全相同,因此我希望在DB2上运行我已经在DB1上运行的相同函数。它们是完全独立的数据库,但具有完全相同的节点。例如,两者都有一个“location”节点,然后我就有了一个侦听器来监听那里的更改。如何使用一个函数在两个数据库上设置侦听器?或者我需要获取对DB2的引用并复制函数吗?

没有每个用户的默认数据库的概念。这意味着您需要从JavaScript代码初始化Firebase,如文档所示:


谢谢你的回答!假设我根据用户对城市的选择将databaseURL传递给配置文件,这不是他的默认数据库吗?这正是我试图做的,但效果不太好。我再试一次。关于问题2的任何提示?如果您使用特定的数据库URL配置
FirebaseApp
,该应用程序将与该数据库交互。如果您尝试了一些不起作用的内容,请编辑您的问题以包括。它起作用了,只是我忘了更改我记录的引用。谢谢你的帮助!我回答了你下面的第一个问题。第二个问题似乎不相关,因此请为此单独提出一个问题。我知道它们对你来说可能都是一个大问题,但在堆栈溢出的情况下,我可以回答一个问题而不需要解决另一个问题,这意味着你应该单独发布它们。谢谢,我在这里发布了它:
// pluck values from your `GoogleService-Info.plist` you created on the firebase console
const iosConfig = {
  clientId: 'x',
  appId: 'x',
  apiKey: 'x',
  databaseURL: 'x',
  storageBucket: 'x',
  messagingSenderId: 'x',
  projectId: 'x',

  // enable persistence by adding the below flag
  persistence: true,
};

// pluck values from your `google-services.json` file you created on the firebase console
const androidConfig = {
  clientId: 'x',
  appId: 'x',
  apiKey: 'x',
  databaseURL: 'x',
  storageBucket: 'x',
  messagingSenderId: 'x',
  projectId: 'x',

  // enable persistence by adding the below flag
  persistence: true,
};

const kittensApp = firebase.initializeApp(
  // use platform specific firebase config
  Platform.OS === 'ios' ? iosConfig : androidConfig,
  // name of this app
  'kittens',
);

// dynamically created apps aren't available immediately due to the
// asynchronous nature of react native bridging, therefore you must
// wait for an `onReady` state before calling any modules/methods
// otherwise you will most likely run into `app not initialized` exceptions
kittensApp.onReady().then((app) => {
   // --- ready ---
   // use `app` arg, kittensApp var or `app('kittens')` to access modules
   // and their methods. e.g:
   firebase.app('kittens').auth().signInAnonymously().then((user) => {
       console.log('kittensApp user ->', user.toJSON());
   });
});