[PWA] 14. Loop cursor

import idb from 'idb';

var dbPromise = idb.open('test-db', 4, function (upgradeDb) {
    switch (upgradeDb.oldVersion) {
        case 0:
            // keyval store is already created at version 1
            var keyValStore = upgradeDb.createObjectStore('keyval');
            keyValStore.put("world", "hello");
        case 1:
            // new version
            upgradeDb.createObjectStore('people', {keyPath: 'name'});
        case 2:
            var peopleStore = upgradeDb.transaction.objectStore('people');
            peopleStore.createIndex('animal', 'favoriteAnimal');
        case 3:
            var peopleStore = upgradeDb.transaction.objectStore('people');
            peopleStore.createIndex('age', 'age');
    }
});

// read "hello" in "keyval"
dbPromise.then(function (db) {
    var tx = db.transaction('keyval'); // Open a transaction
    var keyValStore = tx.objectStore('keyval'); // read the store
    return keyValStore.get('hello'); // get value by key
}).then(function (val) {
    console.log('The value of "hello" is:', val);
});


dbPromise.then(function (db) {
    var tx = db.transaction('people', 'readwrite');
    var peopleStore = tx.objectStore('people');

    peopleStore.put({
        name: "John", // name is the key
        age: 23,
        favoriteAnimal: 'cat'
    });
    peopleStore.put({
        name: "Joe", // name is the key
        age: 21,
        favoriteAnimal: 'cat'
    });
    peopleStore.put({
        name: "Jie", // name is the key
        age: 22,
        favoriteAnimal: 'dog'
    });
    peopleStore.put({
        name: "Jay", // name is the key
        age: 24,
        favoriteAnimal: 'dog'
    });
    return tx.complete;
}).then(function () {
    console.log("People are added");
});

dbPromise.then(function (db) {
    var tx = db.transaction('people', 'readwrite');
    var peopleStore = tx.objectStore('people');
    var ageIndex = peopleStore.index('age');
    return ageIndex.openCursor();
}).then(function (cursor) {
    if (!cursor) return;
    return cursor.advance(1); // skip the first person
}).then(function logPerson(cursor) {
    if(cursor.value.name == "Jie"){
        cursor.delete(); // delete
    }
    if(cursor.value.name == "Jay"){
        console.log("Cursor at:", cursor.value.name);
        var joe = cursor.value;
        joe.favoriteAnimal = "Bird";
        cursor.update(joe); // update
    }
    return cursor.continue().then(logPerson);
}).then(function () {
    console.log("DONE");
});

 

posted @ 2016-05-18 04:34  Zhentiw  阅读(220)  评论(0编辑  收藏  举报