Я новичок в indexedDB (IDB) и пытаюсь работать на CRUD, используя обещанный API IndexedDB от jakearchibald.Я могу создать базу данных, а также ObjectStore и индексы
Создание базы данных
createEmptyDB: function () {
return new Promise( function (resolve) {
idb.open( IDB.dbName, 1, function (idbCx) {
}).then( resolve)
.catch( function (err) {
reject( err);
});
});
}
Я создал таблицу книг и индексов, название и год.
Создание таблицы / objectStore и индексов
createTableAndIndex: function (tableName) {
return new Promise( function (resolve) {
idb.open( IDB.dbName, 2, function (idbCx) {
if (!idbCx.objectStoreNames.contains(tableName)) {
bookssOS = idbCx.createObjectStore(tableName, {keyPath:"id",autoIncrement:true,});
bookssOS.createIndex('title', 'title', {unique: false});
bookssOS.createIndex('year', 'year', {unique: false});
}
}).then( resolve);
});
}
Я создал курсор для извлечения данных, соответствующих названию книги как «Book6»
Курсор для итерации значений из таблиц книг
fetchUsingCursor: function ( tableName) {
return new Promise( function (resolve, reject) {
idb.open( IDB.dbName).then( function (idbCx) { // idbCx is a DB connection
var tx = idbCx.transaction('books', 'readonly');
var store = tx.objectStore('books');
var storeIndex = store.index('title');
var range = IDBKeyRange.only("Book6");
// var storeIndex = store.index('year');
// var range = IDBKeyRange.only(2000);
return storeIndex.openCursor(range);
}).then(function bookItems(cursor) {
if (!cursor) {
return;
}
for (var field in cursor.value) {
console.log(cursor.value['title']);
}
return cursor.continue().then(bookItems);
})
.catch( function (err) {
reject( err);
});
});
}
Но когда я пытаюсь выбрать книги, сопоставив год '2000', комментируя заголовок индекса и включив индекс года, он не получилкниги добавлены с 2000 года, как следует из отчета.Пожалуйста, помогите мне найти проблему и заранее спасибо.
"books":[
{id: "006251587X", title: "Book1", year: 2000, edition: 2},
{id: "0465026567", title: "Book2", year: 2000, edition: 3},
{id: "0465030793", title: "Book3", year: 1990, edition: 4},
{id: "0465030794", title: "Book4", year: 2000, edition: 4},
{id: "0465030795", title: "Book5", year: 2000, edition: 4},
{id: "0465030796", title: "Book6", year: 1990, edition: 4}
]