2017-10-07 6 views
0

je définissais une collection sans aucun problème comme suit:ajouter une nouvelle table pour daynamically dans dexie, IndexedDB

db = new Dexie('db'); 
db.version(1).stores(
    {test : '++id,title'} 
); 

mais quand j'ajouter une nouvelle table à base de données « db » de deux manières ci-dessous, les deux est échoué et le changement ne se produit pas.

//without version change 
db = new Dexie('db'); 
db.version(1).stores(
    {test2 : '++id,title'} 
); 

ou

//with version change 
db = new Dexie('db'); 
db.version(2).stores(
    {test2 : '++id,title'} 
); 

Répondre

0

La deuxième variante est la bonne. Mais gardez le code de la version 1, as described in the docs. Cependant, il peut facilement se tromper si vous avez déjà testé la version 2 ou la version 3. Vous ne pouvez jamais changer la même version sur le même client.

Si votre deuxième alternative échoue, vérifiez dans le journal de la console un message expliquant. Il se peut que vous ayez déjà ajouté une version au-dessus de 2 lors de vos tests. Dans ce cas, vous devrez peut-être soit incrémenter la version à une valeur supérieure à ce qui a été utilisé, ou faire

Dexie.delete('db').then(()=>db.open()) 

La ligne ci-dessus supprime la base de données, puis le recréer.

+0

Veuillez également noter que je veux ajouter une nouvelle table dans la base de données et ne pas changer dans la table existante, comme vous pouvez le voir il n'y a pas de table test2 dans la version 1. de cette façon nous avons augmenté la version? –