web-dev-qa-db-ja.com

クライアントからFirestoreエミュレータを使用する方法

Firebase関数をローカルでテストしたい。これらの関数は、firestoreクエリを作成します。

エミュレーター_firebase emulators:start_を起動し、クライアントでfirebase.functions().useFunctionsEmulator('http://localhost:5001')を使用します。

クライアントで関数を呼び出すと、関数がうまく機能します。 Firestoreエミュレータ内でデータを読み書きできます。

問題 :

Firestoreエミュレータのデータをクライアント内で直接読みたいのですが、

_firebase.firestore().collection('tests').get().then(tests => {
    console.log( tests.docs.map(test=>test.map) )
})
_

しかし、クライアント内でfirestoreエミュレーターを設定する方法が見つかりません。

ここで私が試したこと:

1)Firestoreの設定

_firebase.firestore().settings({
    Host:'http://localhost:8080',
    ssl:false
})
_

結果:

クライアントコンソール内に@firebase/firestore: Firestore (6.3.5): Could not reach Cloud Firestore backend. Backend didn't respond within 10 seconds.が表示されます。

Httpリクエストが「見つかりません」を返す

2)firebaseConfig内にエミュレータのURLを設定します

_var firebaseConfig = {
    // ...
    databaseURL: "http://localhost:8080",
    // ...
}

firebase.initializeApp(firebaseConfig)

_

この場合、リモートサーバー( https://firestore.googleapis.com。 。)が要求されます。

だから私はこれらの2つのケースの1つをセットアップしたい:

1)関数エミュレーター内のリモートFirestoreの使用

OR

2)クライアントコード内でローカルのFirestoreエミュレータを使用します。

誰かがすでにこれを行っていますか?

5
Anthony JEAMME

わかりました、それを行う方法を見つけました:

1)関数エミュレータをローカルで起動します。

set GOOGLE_APPLICATION_CREDENTIALS=./privatekey.json && firebase serve --only functions

2)次にクライアント側:

if (process.env.NODE_ENV === 'development') {
    firebase.functions().useFunctionsEmulator('http://localhost:5001')
}
0
Anthony JEAMME