14

objectStore を作成したときに、以下を正常に追加しました。

{ name: "John Doe", age: 21 }

オプションを使用しました:

{ keyPath: "id", autoIncrement: true }

そのレコードを見つけることができ、id = 1. ただし、以下のコマンドを実行すると、エラーがスローされます。

var store = db.transaction( [ "employees" ], "readwrite" ).objectStore( "employees" );
var request = store.put( { name: "John Doe", age: 32 }, 1 );

これはスローします:

DataError: DOM IDBDatabase Exception 0

誰が何が悪いのか知っていますか?キーの指定が間違っていませんか?

アップデート

IndexedDBの仕様では、2 番目のパラメーターを許可する必要があると記載されています。

interface IDBObjectStore {
    ...
    IDBRequest put (any value, optional any key);
    ...
};

ただし、機能しませんが、これは機能します:

store.put( { name: "John Doe", age: 32, id: 1 } );

それを必要とするのはバグです。私がまだ何か間違ったことをしていない限り。

4

2 に答える 2

23

エラーの意味 (完全なリストについては、こちらを参照してください):

操作に提供されたデータが要件を満たしていません。

オブジェクト ストアはインライン キーを使用し、key パラメーターが提供されました。

インライン キーkeypathを使用するようストアに指示するを指定していますが、2 番目のパラメータとしてアウト オブ ライン キーを指定したため、失敗します。put

于 2013-06-16T07:25:43.363 に答える