Измените базу данных Firebase по умолчанию программно и запустите те же функции Firebase как для базы данных по умолчанию, так и для вторичной базы данных. - PullRequest
1 голос
/ 19 июня 2019

Фон - Я настраиваю новую функцию, которая позволяет пользователям выбирать, в каком городе они находятся, поскольку мое приложение является приложением общественного транспорта. Я хотел бы, чтобы города были в отдельных базах данных, и для этого я создал вторичную базу данных в своем проекте Firebase. Это приложение React Native, и я использую response-native-firebase.

Вопрос 1 - Когда пользователи выбирают другой город, я бы хотел, чтобы эта база данных была его базой данных по умолчанию. Я не мог понять, как это сделать, кто-нибудь может помочь?

Я попытался инициализировать и просто изменить databaseURL, и хотя я подключался ко второй БД один раз, это не всегда происходило. Похоже, нестабильное решение.

Другое решение, которое я нашел, состояло бы в том, чтобы передать URL каждому файлу firebase.database (url), но это кажется плохим решением.

Вопрос 2 - Поскольку приложение в обоих городах одно и то же, я хотел бы запускать те же функции, что и в DB1, в DB2. Это полностью отдельные БД, но с одинаковыми узлами. У обоих, например, есть узел «location», а затем у меня есть прослушиватель изменений. Как настроить прослушиватели в обеих базах данных с помощью только одной функции? Или мне нужно получить ссылку на DB2 и просто дублировать функции?

1 Ответ

0 голосов
/ 19 июня 2019

Нет концепции базы данных по умолчанию для каждого пользователя. Это означает, что вы захотите инициализировать Firebase из своего кода JavaScript, как показано в документации React Native Firebase :

// 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());
   });
});
...