zoukankan      html  css  js  c++  java
  • [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);
    });

  • 相关阅读:
    java(JDBC连接数据库)[完整版封装]
    java(JDBC连接数据库)[对Statement进行封装]
    HTML基础(DTD & 注释 &常见HTML编码)
    HTML基础(基本结构)
    HTML基础(格式标签)
    java(安全方便的从控制台读入数据)[对Scanner类进行封装,用正则表达式判断]
    java(JDBC连接数据库)[对PreparedStatement进行封装]
    for循环
    什么是操作系统
    字符串内置方法
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5503850.html
Copyright © 2011-2022 走看看