Bug de l’émulateur Firestore : Les écritures de données réussissent mais rien ne s’affiche (Résolu)


🧪 Ce qui s’est passé

La configuration

  • Utilisation d’un seul projet Firebase pour la production et le développement
  • Exécution locale de Firestore avec la Suite d’Émulateurs
  • Utilisation du mode local uniquement pour éviter d’écrire en production
  • Tout fonctionnait : écritures, lectures, règles, etc.

⚐️ Le changement

  • Scission de Firebase en :

    • Un projet de production
    • Un projet de développement séparé pour les tests locaux

Motivation : La suite d’émulateurs ne prend pas tout en charge ; la séparation évite les conflits avec la production


😤 Le problème

  • Les écritures Firestore ont réussi :

    • ✅ Coches vertes dans l’onglet Requêtes de l’interface de l’émulateur
    • ✅ Aucune violation de règle
  • Mais l’onglet Data de Firestore était vide :

    • Aucun /users, /words, ou nouveaux documents

Pourtant les logs montraient :

create /databases/(default)/documents/users/UID/words/term|lang
update /databases/(default)/documents/users/UID/words/term|lang

Diagnostic

🔍 La cause principale

  • L’interface de l’émulateur n’affiche la base de données Firestore que pour le projet par défaut défini dans l’interface de ligne de commande (CLI) Firebase

  • Si le contexte CLI est défini sur un projet différent (ancien) :

    • Les écritures de l’émulateur vont vers une base de données
    • L’interface utilisateur lit depuis une autre
    • ❌ Incohérence des données

La solution : Définir le bon projet par défaut

✅ Étape par étape

  1. Ouvrez le terminal dans le dossier de votre projet

  2. Ajoutez un alias de projet :

    firebase use --add
    
  3. Entrez un alias (par ex., dev)

  4. Définissez-le comme projet par défaut :

    firebase use dev
    
  5. Redémarrez l’émulateur :

    firebase emulators:start
    

Aujourd’hui, l’interface utilisateur affiche la bonne base de données : /firestore/data/databases/(default)/documents

🔧 Optionnel : Définir par défaut dans .firebaserc

Mettez à jour le fichier .firebaserc :

{
  "projects": {
    "default": "votre-id-de-projet-dev"
  }
}

Cela empêche les erreurs accidentelles de contexte CLI.


Conclusion

Si les écritures réussissent mais qu’aucune donnée n’apparaît :

  • Vous écrivez probablement sur un projet alors que l’interface utilisateur lit un autre projet.

Solution

firebase use <alias-de-projet>
firebase emulators:start

🤀 TL;DR (Résumé)

Symptôme Solution
Les écritures réussissent mais aucune donnée ne s’affiche Exécuter firebase use <votre-alias-dev>
L’interface utilisateur est toujours vide Vérifiez que l’interface utilisateur affiche la bonne BD
Vous souhaitez que la configuration persiste Modifiez .firebaserc et définissez "default"

Bonne émulation 👨‍💻🔥