Pourquoi est-ce IndexedDB mettre échec d'une commande? Erreur: DataError: DOM IDBDatabase Exception 0
J'ai réussi à ajouter le texte suivant à la objectStore quand je l'ai créé:
{ name: "John Doe", age: 21 }
J'ai utilisé les options:
{ keyPath: "id", autoIncrement: true }
Je suis en mesure de trouver le dossier et il montre le id = 1
. Cependant, quand je lance cette commande ci-dessous, il renvoie une erreur:
var store = db.transaction( [ "employees" ], "readwrite" ).objectStore( "employees" );
var request = store.put( { name: "John Doe", age: 32 }, 1 );
Ce lève:
DataError: DOM IDBDatabase Exception 0
Personne ne sait quel est le problème? Suis-je en spécifiant la clé de manière incorrecte?
Mise à jour
La IndexedDB spec dit que le second paramètre doit être autorisé:
interface IDBObjectStore {
...
IDBRequest put (any value, optional any key);
...
};
Toutefois, cela ne fonctionne pas, mais ce fonctionne:
store.put( { name: "John Doe", age: 32, id: 1 } );
C'est un bug d'exiger que. Sauf si je suis encore en train de faire quelque chose de mal.
J'ai été confrontée au même problème.J'ai essayé IDBRequest mettre (n'importe quelle valeur, en option toute touche); avec le passage d'incrémentation automatique de l'id en paramètre facultatif et cela a fonctionné
OriginalL'auteur Don Rhummy | 2013-06-16
Vous devez vous connecter pour publier un commentaire.
L'erreur signifie (voir ici pour la liste complète):
Vous spécifiez un
keypath
qui instruisent le magasin à utiliser dans la ligne de touches, mais comme vous l'avez spécifié une ligne de clé en deuxième paramètreput
il échouera.{ autoIncrement: true }
cela aurait-il travaillé?Sans la clé-chemin, oui, chaque magasin d'objets obtient son propre générateur de clé. Voir aussi cet article: kristofdegrave.être/2012/02/...
OriginalL'auteur
J'ai rencontré intéressant comportement de cette fonction dans Internet Explorer 10.
J'ai eu de stockage simple avec clé de configuration comme la vôtre:
Lorsque vous essayez de mettre l'objet en elle et en passant deuxième argument de la variable, qui a de la valeur undefined, DataError exception est levée. Firefox et Google Chrome n'ont pas un tel comportement étrange.
Il semble, IE10 vérifie les arguments de longueur dans sa mise en œuvre au lieu de vérifier si le deuxième argument est défini. J'ai eu beaucoup de problèmes à cause de ça, donc, je l'espère, ma réponse sera aider les autres peaple, qui devront faire face à cette exception dans IE10.
Voici un exemple.
OriginalL'auteur Andrew Shustariov