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?
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')
}