[PWA] 13. New db and object store

Create a db:

import idb from 'idb';

var dbPromise = idb.open('test-db', 2, 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'});
    }
});

The oldVersion switch between old db and new db. So here we create a new people db.

 

ReadWrite:

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');
    var peopleStore = tx.objectStore('people');
    return peopleStore.getAll();
}).then(function (people) {
    console.table(people);
});

 


 

Group By:
TO do gourp by we need to create index:

import idb from 'idb';

var dbPromise = idb.open('test-db', 3, 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');
    }
});

 

Group by animal:

dbPromise.then(function (db) {
    var tx = db.transaction('people');
    var peopleStore = tx.objectStore('people');
    var animalIndex = peopleStore.index('animal');
    //return animalIndex.getAll(); // all the animals
    return animalIndex.getAll('cat'); // only cat
}).then(function (people) {
    console.table(people);
});

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