2012-05-09 6 views
2

Ma structure d'objet est comme ceci:DOM IDBDatabase Exception 5 lors de l'ajout de données dans IndexedDB

var test={ 
     "id":"A", 
     "ChanName":"Discovery", 
     "LCN":10 
     }; 

Ceci est l'extrait qui crée le magasin d'objets:

var objectStore = db.createObjectStore('Dat', { keyPath:'test.id',autoIncrement: false}); 

var trans = db.transaction(["Dat"], webkitIDBTransaction.READ_WRITE); 
     var store = trans.objectStore("Dat"); 
     var request=store.put(test); 

Quand je tente d'ajouter le test objet je reçois cette exception DATA_ERR: DOM IDBDatabase Exception 5. S'il vous plaît pouvez-vous des conseils sur ce qui ne va pas ici? J'utilise chrome 18 pour tester cela.La création de magasin d'objets est très bien, mais pas en mesure d'ajouter des données

Répondre

3

Une exception IndexedDB 5 est levée lorsque les «données fournies à une opération ne répondent pas aux exigences». C'est généralement parce que vous avez ajouté un index, par exemple, en fournissant un objet manquant cet attribut.

Ici, il semble que votre objet test ne corresponde pas à ce que vous avez spécifié en tant que keypath.

Si vous voulez id comme une clé de votre createObjectStore faudrait ressembler à ceci:

var objectStore = db.createObjectStore('Dat', { keyPath:'id',autoIncrement: false}); 

Comme autre exemple, encore, avec votre KeyPath tout comme votre objet test devrait ressembler à ceci pour ne pas lancer cette erreur:

var test={ 
test: { "id":"A" }, 
ChanName:"Discovery", 
LCN:10 
}; 
Questions connexes