質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

0回答

1054閲覧

IndexedDBのopenCursor()で値が取得できずnullになる。

meuar

総合スコア18

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2019/03/15 09:10

編集2022/01/12 10:55

あるキーが含まれるデータのみ削除したいです。

createIndex()を使いキーを変更しており、そのあとopenCursor()でキーを指定したところ最初のデータのみ削除でき、その他のレコードは削除できずにnullが返ってきました。
その他のレコードも最初に取得できたデータとキーは一緒です。

回答をお願いします。

コード

function createDB() { var dbName = 'habitDB'; // DB名を指定して接続。指定したDB名がなければ新規作成。 var openDb = indexedDB.open( dbName ); // DBの更新時のみ実行 openDb.onupgradeneeded = function( event ) { var db = event.target.result; // テーブルを生成 db.createObjectStore( 'listTable', {keyPath: 'listId'} ); var weekStore = db.createObjectStore( 'weekDayTable', {keyPath: ['listId', 'weekId']} ); db.createObjectStore( 'recordTable', {keyPath: 'listId'} ); var monthStore = db.createObjectStore( 'monthTable', {keyPath: ['listId', 'month']} ); var toDoStore = db.createObjectStore( 'toDoTable', {keyPath: ['listId', 'toDoDate']} ); // index作成(引数1:名前, 引数2:キー名) toDoStore.createIndex( 'toDoStoreId', 'toDoDate',{unipue: false} ); weekStore.createIndex( 'weekStoreId', 'listId',{unipue: false} ); monthStore.createIndex( 'monthStoreId', 'listId', {unipue: false} ); alert( 'DBを更新しました。' ); // 接続解除 db.close(); } } /* keyが含まれるデータを削除する関数 */ // key: DBのキー name: createIndexの名前 table: DBのテーブル名 this.deleteOnly = function( key, name, table ) { return new Promise( function( resolve, reject ) { var dbName = 'habitDB'; var openDb = indexedDB.open( dbName ); openDb.onsuccess = function( event ) { var db = event.target.result; var transaction = db.transaction( table, 'readwrite' ); var store = transaction.objectStore( table ); var index = store.index( name ); index.getAll().onsuccess = function(event) { var test = event.target.result; for( var value of test ) { console.log(value); } } // データ範囲の指定 var cursor = index.openCursor( key, "next" ); cursor.onsuccess = function( event ) { var result = event.target.result; if( result ) { console.log("削除"); console.log(result.value); result.delete(); result.continue(); }else{ resolve(); } } }; }); }

データ例

listIdDateflag
12019-01-01false
12019-01-02false
12019-01-03false
12019-01-04false
12019-01-05false
22019-01-06false

エラー例:キーを1で指定するとリストの一番上のレコードのみ削除されてしまう。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問