javascript 入門 使い方 - 新しいAPIの2つの別々のファイルでFirebaseのリファレンスを初期化する





2 Answers

異なるインスタンスに名前を付ける必要があります(Firebaseが呼び出すApps)。 デフォルトでは[DEFAULT] Appで作業していますが、これは最も一般的な使用例ですが、複数のAppsで作業する必要がある場合は、初期化するときに名前を追加する必要があります:

// Intialize the "[DEFAULT]" App
var mainApp = firebase.intializeApp({ ... });

// Intialize a "Secondary" App
var secondaryApp = firebase.initializeApp({ ... }, "Secondary");
...
mainApp.database().ref("path/to/data").set(value);
secondaryApp.database().ref("path/to/data").set(anotherValue);

追加のシナリオ例は、JavaScriptプロジェクトにFirebaseを追加するガイドの更新された複数のアプリケーションの初期化セクションを参照してください。

webアプリ js auth

私は新しいAPIにアップグレードし、2つの別々のファイルでFirebaseリファレンスを初期化する方法を知らない:

    /* CASE 1 */
    // 1st file
    var config = {/* ...  */};
    firebase.initializeApp(config);
    var rootRef = firebase.database().ref();

    // 2nd file - initialize again
    var config = {/* ...  */};
    firebase.initializeApp(config);
    var rootRef = firebase.database().ref();

結果:bundle.js:535 Uncaught Error: 'DEFAULT'という名前のFirebaseアプリが既に存在します。

    /* CASE 2 */
    // 1st file
    var config = {/* ...  */};
    firebase.initializeApp(config);
    var rootRef = firebase.database().ref();

    // 2nd file - don't initialize
    var rootRef = firebase.database().ref();

結果:bundle.js:529 Uncaught Error:Firebase App '[DEFAULT]'が作成されていません - Firebase App.initializeApp()を呼び出してください。

新しいAPIを呼び出す前に

var myFirebaseRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/");

各ファイルで、それは大丈夫だった。




私はこのようにインポートして間違いを犯しました。

import firebase from 'firebase'

const firebaseConfig = {
  apiKey: 'key',
  authDomain: 'domain',
  databaseURL: 'url',
  storageBucket: ''
};

firebase.initializeApp(firebaseConfig);

これは数日間はうまくいきましたが、 カスタムトークンでサインインしようとしたときに、authオブジェクトは変更されませんでした。 更新するためにページを更新しなければならなかったので、自分自身の認証資格情報ルールで保護されていたデータベースに特定の呼び出しを行うことができました。

 ".read": "$uid === auth.uid || auth.isAdmin === true || auth.isTeacher === true",

私はこれに私の輸入を変更したときに再び働いた。

import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/database';

const firebaseConfig = {
  apiKey: 'key',
  authDomain: 'domain',
  databaseURL: 'url',
  storageBucket: ''
};

firebase.initializeApp(firebaseConfig);

Firebaseを特定のモジュールで使用する必要があるときはいつでも、これをインポートします(Firebaseの代わりにFirebase / Appからインポートすることに注意してください)。

import firebase from 'firebase/app';

そして、次のような特定のサービスに話してください。

firebase.auth().onAuthStateChanged((user) => {
  if (user) {
    // Authenticated.
  } else {
    // Logged out.
  }
});

firebase.database().ref('myref').once('value').then((snapshot) => {
  // do stuff with the snapshot
});



Related