0

こんにちは、ID を渡してインデックス付きデータベースのレコードを削除しようとしていますが、関数が正しく機能しておらず、Visual Studio のインテリジェンスでさえそのような関数を表示していません。インデックス付きデータベース API の objectstore.delete() 関数が減価償却されているか、それを呼び出すのに何か問題がありますか。
以下はコードスピネットです

  var result = objectStore.delete(key);
            result.onsuccess = function() {
                alert('Success');
            };
4

2 に答える 2

1

キーによる削除機能は、Chrome、FF、および IE10 のすべてのブラウザーで正常に機能しています。サンプルコードは次のとおりです。

var connection = indexedDB.open(dbName);
connection.onsuccess = function(e) {
    var database = e.target.result;
    var transaction = database.transaction(storeName, 'readwrite');
    var objectStore = transaction.objectStore(storeName);
    var request = objectStore.delete(parseInt(key));
    request.onsuccess = function (event)
    {
        database.close();
    };

}
于 2013-10-01T13:27:43.493 に答える
1

IndexedDB のほとんどすべてが同じように機能します。あなたの質問は、このモデルの誤解に反しています。つまり、すべてがトランザクションで発生します。

データベースを開くことを除いて、IndexedDB API で同期することはほとんどありません。そのため、レコードを扱うときにdatabase.delete()やのようなものは決して見られません。database.set()

レコードを削除するには、取得または設定と同様に、データベースで新しいトランザクションを作成することから始めます。次に、そのトランザクションを ( Deni の例のように) 使用して、変更のメソッドを呼び出します。

トランザクションは、すべての機能の範囲外になると「消え」、変更がデータベースにコミットされます。成功やエラーのコールバックなどのイベント リスナーをフックするのは、このトランザクションのデータベース (データベース自体ではない) への参照です。

于 2013-10-01T13:52:22.367 に答える