web-dev-qa-db-fra.com

Comment utiliser l'émulateur Firestore du client

Je veux tester localement mes fonctions Firebase. Ces fonctions font des requêtes Firestore.

Je lance donc l'émulateur firebase emulators:start Et dans mon client j'utilise firebase.functions().useFunctionsEmulator('http://localhost:5001').

Mes fonctions fonctionnent bien lorsque je les appelle dans mon client. Je peux lire/écrire des données à l'intérieur de l'émulateur Firestore.

Le problème :

Je veux lire les données de l'émulateur du magasin de pompiers directement dans mon client, comme:

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

mais je ne trouve pas comment configurer l'émulateur firestore dans mon client.

voici ce que j'ai essayé:

1) Paramètre Firestore

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

résultat :

j'obtiens @firebase/firestore: Firestore (6.3.5): Could not reach Cloud Firestore backend. Backend didn't respond within 10 seconds. à l'intérieur de ma console client.

La requête http retourne 'Not found'

2) Définissez l'url de l'émulateur à l'intérieur de ma base de données FireConfig

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

firebase.initializeApp(firebaseConfig)

dans ce cas, le serveur distant ( https://firestore.googleapis.com. .) est demandé.

Je veux donc configurer l'un de ces deux cas:

1) Utilisation du Firestore distant dans mes émulateurs de fonctions

OR

2) Utilisation de l'émulateur local de firestore dans mon code client.

Quelqu'un l'a déjà fait?

5
Anthony JEAMME

Ok j'ai trouvé comment faire:

1) lancez l'émulateur de fonctions localement:

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

2) puis côté client:

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