1. import idb from 'idb';
  2.  
  3. var dbPromise = idb.open('test-db', 4, function (upgradeDb) {
  4. switch (upgradeDb.oldVersion) {
  5. case 0:
  6. // keyval store is already created at version 1
  7. var keyValStore = upgradeDb.createObjectStore('keyval');
  8. keyValStore.put("world", "hello");
  9. case 1:
  10. // new version
  11. upgradeDb.createObjectStore('people', {keyPath: 'name'});
  12. case 2:
  13. var peopleStore = upgradeDb.transaction.objectStore('people');
  14. peopleStore.createIndex('animal', 'favoriteAnimal');
  15. case 3:
  16. var peopleStore = upgradeDb.transaction.objectStore('people');
  17. peopleStore.createIndex('age', 'age');
  18. }
  19. });
  20.  
  21. // read "hello" in "keyval"
  22. dbPromise.then(function (db) {
  23. var tx = db.transaction('keyval'); // Open a transaction
  24. var keyValStore = tx.objectStore('keyval'); // read the store
  25. return keyValStore.get('hello'); // get value by key
  26. }).then(function (val) {
  27. console.log('The value of "hello" is:', val);
  28. });
  29.  
  30. dbPromise.then(function (db) {
  31. var tx = db.transaction('people', 'readwrite');
  32. var peopleStore = tx.objectStore('people');
  33.  
  34. peopleStore.put({
  35. name: "John", // name is the key
  36. age: 23,
  37. favoriteAnimal: 'cat'
  38. });
  39. peopleStore.put({
  40. name: "Joe", // name is the key
  41. age: 21,
  42. favoriteAnimal: 'cat'
  43. });
  44. peopleStore.put({
  45. name: "Jie", // name is the key
  46. age: 22,
  47. favoriteAnimal: 'dog'
  48. });
  49. peopleStore.put({
  50. name: "Jay", // name is the key
  51. age: 24,
  52. favoriteAnimal: 'dog'
  53. });
  54. return tx.complete;
  55. }).then(function () {
  56. console.log("People are added");
  57. });
  58.  
  59. dbPromise.then(function (db) {
  60. var tx = db.transaction('people', 'readwrite');
  61. var peopleStore = tx.objectStore('people');
  62. var ageIndex = peopleStore.index('age');
  63. return ageIndex.openCursor();
  64. }).then(function (cursor) {
  65. if (!cursor) return;
  66. return cursor.advance(1); // skip the first person
  67. }).then(function logPerson(cursor) {
  68. if(cursor.value.name == "Jie"){
  69. cursor.delete(); // delete
  70. }
  71. if(cursor.value.name == "Jay"){
  72. console.log("Cursor at:", cursor.value.name);
  73. var joe = cursor.value;
  74. joe.favoriteAnimal = "Bird";
  75. cursor.update(joe); // update
  76. }
  77. return cursor.continue().then(logPerson);
  78. }).then(function () {
  79. console.log("DONE");
  80. });

[PWA] 14. Loop cursor的更多相关文章

  1. Oracle PLSQL Demo - 10.For Loop遍历游标[FOR LOOP CURSOR]

    declare cursor cur_emp is select t.* from scott.emp t; begin for r_emp in cur_emp loop dbms_output.p ...

  2. oracle中REF Cursor用法

    from:http://www.111cn.net/database/Oracle/42873.htm 1,什么是 REF游标 ? 动态关联结果集的临时对象.即在运行的时候动态决定执行查询. 2,RE ...

  3. 内核链表list.h

    stddef.h #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) list.h #ifndef _LINUX ...

  4. Linux 内核 链表 的简单模拟(2)

    接上一篇Linux 内核 链表 的简单模拟(1) 第五章:Linux内核链表的遍历 /** * list_for_each - iterate over a list * @pos: the & ...

  5. linux内核数据结构之链表

    linux内核数据结构之链表 1.前言 最近写代码需用到链表结构,正好公共库有关于链表的.第一眼看时,觉得有点新鲜,和我之前见到的链表结构不一样,只有前驱和后继指针,而没有数据域.后来看代码注释发现该 ...

  6. linux内核数据结构之链表【转】

    转自:http://www.cnblogs.com/Anker/p/3475643.html 1.前言 最近写代码需用到链表结构,正好公共库有关于链表的.第一眼看时,觉得有点新鲜,和我之前见到的链表结 ...

  7. 韩顺平Oracle笔记

    韩顺平Oracle笔记 分类: DataBase2011-09-07 10:24 3009人阅读 评论(0) 收藏 举报 oracle数据库sqljdbcsystemstring   目录(?)[-] ...

  8. Oracle PLSQL游标、游标变量的使用

    参考文章:https://www.cnblogs.com/huyong/archive/2011/05/04/2036377.html 在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实 ...

  9. 《Linux设备驱动程序》编译LDD3的scull驱动问题总结***

    由于Linux内核版本更新的原因,LDD3(v2.6.10)提供的源码无法直接使用,下面是本人编译scull源码时出现的一些问题及解决方法.编译环境:Ubuntu 10.04 LTS(kernel v ...

随机推荐

  1. php5.6安装

    # yum --enablerepo=remi,remi-php56 install php-fpm php-common php-mysql php-opcache php-pear php-gd ...

  2. login-登录

    <!DOCTYPE html><html><head><meta charset="UTF-8"><title>Inse ...

  3. ecshop数据表

    ecs_account_log:账户变动日志(注册用户充值.支付等记录信息) ecs_ad:广告表 ecs_admin_action:管理员权限表(定义了128项功能操作) ecs_admin_log ...

  4. POJ1611-The Suspects-ACM

    The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions: 23002   Accepted: 11171 De ...

  5. DEDECMS会员注册如何配置邮箱发送邮件功能

    网站邮件功能是一个非常基础和有效的通信工具,配合dede会员注册邮件验证功能可以大量的拒绝垃圾注册用户.那么如何配置DEDECMS会员注册邮箱发送邮件功能?   1:配置dedecms网站发信EMAI ...

  6. Github Https方式push错误”Empty reply from server”

                  1 2 3 4 5 6 7 8 9 10 2014-11-19 20:41:30.130 GitHub for Mac Login[2595:326257] AskPass ...

  7. CodeChef FNCS

    题面:https://www.codechef.com/problems/FNCS 题解: 我们考虑对 n 个函数进行分块,设块的大小为S. 每个块内我们维护当前其所有函数值的和,以及数组中每个元素对 ...

  8. var a =a || {}

  9. 用链表解决if语句过多的问题(C/C++实现)

    起因 http://www.cnblogs.com/code-style/p/3499408.html 设计模式的解决方案(基于python语言) http://www.cnblogs.com/cod ...

  10. Node.js Express框架

    Express 介绍 Express是一个最小的,灵活的Node.js Web应用程序框架,它提供了一套强大的功能来开发Web和移动应用程序. 它有助于基于Node Web应用程序的快速开发.下面是一 ...