Skip to content

github-gmm/indexedDB-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

indexedDB-demo

浏览器数据库indexedDB,实现了增删查改功能

1、打开数据库:每次版本号不一样就会新建数据库

var request = window.indexedDB.open('数据库名称', 版本号);

2、新建数据仓库(表)和索引:都是在upgradeneeded的事件中执行
  首先在upgradeneeded事件中获取数据库:

request.onupgradeneeded = function(event) {
  db = event.target.result;
};

  然后判断数据仓库是否存在?不存在就新建:keyPath指定主键 / autoIncrement: true代表自动生成主键

request.onupgradeneeded = function(event) {
  db = event.target.result;
  let table;
  if (!db.objectStoreNames.contains('数据仓库名称')) {
    table = db.createObjectStore('数据仓库名称', { keyPath: 'id' });
  }
}

  新建索引:unique代表唯一,如果为true不能插入该字段相同的数据

request.onupgradeneeded = function(event) {
  db = event.target.result;
  let table;
  if (!db.objectStoreNames.contains('数据仓库名称')) {
    table = db.createObjectStore('数据仓库名称', { keyPath: 'id' });
  }
  table.createIndex('name', 'name', { unique: false });
  table.createIndex('email', 'email', { unique: true });
};

3、新增数据记录:readwrite读写权限

let table = db.transaction(['数据仓库名称'], 'readwrite').objectStore('数据仓库名称')
let record = table.add({ id: 1, name: '张三', age: 24, email: 'zhangsan@example.com' });
record.onsuccess = function (event) {
  console.log('数据写入成功');
};
record.onerror = function (event) {
  console.log('数据写入失败');
};

4、更新数据记录

let table = db.transaction(['数据仓库名称'], 'readwrite').objectStore('数据仓库名称')
let record = table.put({ id: 1, name: '李四', age: 24, email: 'zhangsan@example.com' });
record.onsuccess = function (event) {
  console.log('数据更新成功');
};
record.onerror = function (event) {
  console.log('数据更新失败');
};

5、删除数据记录

let table = db.transaction(['数据仓库名称'], 'readwrite').objectStore('数据仓库名称')
let record = table.delete(1);
record.onsuccess = function (event) {
  console.log('数据删除成功');
};
record.onerror = function (event) {
  console.log('数据删除失败');
};

6、查询数据记录
  根据条件查询:

// 方法一:  
let table = db.transaction(['数据仓库名称']).objectStore('数据仓库名称');
let record = objectStore.get(1); // 获取主键 = 1的值
record.onsuccess = function( event) {
  let result = request.result
  if (result) {
    ...
  } else {
    console.log('未获得数据记录');
  }
};
record.onerror = function(event) {
  console.log('事务失败');
};
// 方法二: 
let table = db.transaction(['数据仓库名称'], 'readonly').objectStore('数据仓库名称');
let record = table.index('name').get('李四'); // 根据索引获取name = 李四的值
record.onsuccess = function (event) {
  let result = event.target.result;
  if (result) {
    ...
  }
};

  查询全部:

let table = db.transaction('数据仓库名称').objectStore('数据仓库名称');
table.openCursor().onsuccess = function (event) {
  var cursor = event.target.result;
  if (cursor) {
    console.log('Id: ' + cursor.key);
    console.log('Name: ' + cursor.value.name);
    console.log('Age: ' + cursor.value.age);
    console.log('Email: ' + cursor.value.email);
    cursor.continue();
  } else {
    console.log('没有更多数据了!');
  }
};

About

浏览器数据库indexedDB,实现了增删查改功能

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages