Bonjour,

Je découvre IndexedDb et je rencontre un problème au niveau du comportement de l'event oncomplete. Quelque chose doit m'échapper. Voici ce que j'essaie de faire: je doit creer et charger des données au démarrage d'une page dans plusieurs object store. Je souhaite avec un trace de fin pour chacun d'eux. De même je ne charge les données que lorsque la création de l'objet est terminé. Avec 1 seul object store, le code ci dessous fonctionne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
                let lObjectStoreUtilisateurs = undefined;
                let lObjectStoreConstantes = undefined;
 
 
                lObjectStoreUtilisateurs = gLocalBdd.createObjectStore(DB_OS_UTILISATEUR, { keyPath: "ssn" });
                lObjectStoreUtilisateurs.createIndex("name", "name", { unique: false });
                // Utiliser la transaction "oncomplete" pour être sûr que la création de l'objet de stockage
                // est terminée avant d'ajouter des données dedans.
                lObjectStoreUtilisateurs.transaction.oncomplete = function (event)
                {
                    GestionErreur.Tracer("Création de l'object store " + DB_OS_UTILISATEUR + " terminée.");
                    GestionLocalDB.MajDonnees(DB_OS_UTILISATEUR);
                };
En sortie, j'ai bien ma trace et mes données.

Maintenant, en ajoutant un 2eme object store juste après:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
                lObjectStoreConstantes = gLocalBdd.createObjectStore(DB_OS_CONSTANTES); 
                lObjectStoreConstantes.transaction.oncomplete = function (event)
                {
                    GestionErreur.Tracer("Création de l'object store " + DB_OS_CONSTANTES + " terminée.");
 
                };
En sortie, j'ai mes 2 object store créés, pas les données du premier, et uniquement la trace du 2ème object store créé.

Je ne comprends pas pourquoi.

Merci d'avance.