java indexeddb_indexedDB 增删改查

var db;

var dbName = "HelloTestDatabase";

var dbVersion = 1;

function connectDatabase() {

var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;

if(!indexedDB) {

alert("你的浏览器不支持IndexedDB");

} else {

var request = indexedDB.open(dbName, dbVersion);

request.onerror = function(event) {

alert("Why didn't you allow my web app to use IndexedDB?!");

};

request.onsuccess = function(event) {

console.log("onsuccess");

db = event.target.result;

};

// dbVersion有变动时会触发这个事件

// 数据的结构的变动需要在这里面操作

request.onupgradeneeded = function(event) {

console.log("onupgradeneeded");

db = event.target.result;

// 对象仓库创建部分

// event.target.transaction属性值为一个IDBTransaction事务对象,此处代表版本更新事务

let tx = event.target.transaction;

let name = 'IMMsg';

// 主键设置

let optionalParameters = {

keyPath: 'msgId',

autoIncrement: false

};

// 参数:对象仓库名, JavasScript对象(可选参数)

let store = db.createObjectStore(name, optionalParameters);

// 索引创建部分

let IndexName = 'usernameIndex'; // 索引名

let keyPath = 'username'; // 索引字段

let IndexOptionalParameters = {

unique: false,

multiEntry: false

};

let idx = store.createIndex(IndexName, keyPath, IndexOptionalParameters); //参数:索引名

console.log(idx);

// 创建组合索引

idx = store.createIndex('username-otherUsername', ['username','otherUsername']); // corrected

console.log(idx);

console.log('索引创建成功');

};

}

}

function SaveData() {

//开启读写事务

let tx = db.transaction(['IMMsg'],'readwrite');

tx.oncomplete = function(){

console.log('保存数据成功');

}

tx.onabort = function(){

console.log('保存数据失败');

}

let store = tx.objectStore('IMMsg');

let data1 = {

msgId: 1,

username: '张三',

otherUsername: '李四',

senderType: 1, // 1-发送发, 2-接收方

msgType: 1 ,// 1-文本信息, 2-图片, 3-语音

msgContent: '你好',

isRead: 1 // 1-未读, 2-已读

};

store.put(data1); // 使用 put 而不是 add 直接更新数据

let data2 = {

msgId: 2,

username: '张三',

otherUsername: '李四',

senderType: 2, // 1-发送发, 2-接收方

msgType: 1 ,// 1-文本信息, 2-图片, 3-语音

msgContent: '我很好',

isRead: 1 // 1-未读, 2-已读

};

store.put(data2);

let data3 = {

msgId: 3,

username: '张三',

otherUsername: '李四',

senderType: 1, // 1-发送发, 2-接收方

msgType: 1 ,// 1-文本信息, 2-图片, 3-语音

msgContent: '最近在忙啥',

isRead: 1 // 1-未读, 2-已读

};

store.put(data3);

///

let data4 = {

msgId: 4,

username: '李四',

otherUsername: '张三',

senderType: 2, // 1-发送发, 2-接收方

msgType: 1 ,// 1-文本信息, 2-图片, 3-语音

msgContent: '你好',

isRead: 1 // 1-未读, 2-已读

};

store.put(data4);

let data5 = {

msgId: 5,

username: '李四',

otherUsername: '张三',

senderType: 1, // 1-发送发, 2-接收方

msgType: 1 ,// 1-文本信息, 2-图片, 3-语音

msgContent: '我很好',

isRead: 1 // 1-未读, 2-已读

};

store.put(data5);

let data6 = {

msgId: 6,

username: '张三',

otherUsername: '王麻子',

senderType: 1, // 1-发送发, 2-接收方

msgType: 1 ,// 1-文本信息, 2-图片, 3-语音

msgContent: 'xxxxxx',

isRead: 1 // 1-未读, 2-已读

};

store.put(data6);

}

function deleteData() {

var onlyKeyRange = IDBKeyRange.only(["张三","王麻子"]);

var transaction = db.transaction(['IMMsg'], 'readwrite');

var store = transaction.objectStore('IMMsg');

var index = store.index('username-otherUsername');

index.openCursor(onlyKeyRange).onsuccess = function(event) {

var cursor = event.target.result;

if (cursor) {

store.delete(cursor.value.msgId);

cursor.continue();

} else {

console.log("遍历完成");

}

};

}

function updateData() {

var onlyKeyRange = IDBKeyRange.only(["张三","李四"]);

var transaction = db.transaction(['IMMsg'], 'readwrite');

var store = transaction.objectStore('IMMsg');

var index = store.index('username-otherUsername');

index.openCursor(onlyKeyRange).onsuccess = function(event) {

var cursor = event.target.result;

if (cursor) {

cursor.value.isRead = 2;

store.put(cursor.value);

cursor.continue();

} else {

console.log("遍历完成");

}

};

}

function getData() {

// 1. 游标遍历所有数据

// var list = [];

// var objectStore = db.transaction('IMMsg').objectStore('IMMsg');

// objectStore.openCursor().onsuccess = function(event) {

// var cursor = event.target.result;

// if (cursor) {

// list.push(cursor.value);

// cursor.continue();

// } else {

// console.log('Get all data:');

// console.log(list);

// }

// };

//

// 2. 单个索引上使用游标

// var onlyKeyRange = IDBKeyRange.only("李四");

// var transaction = db.transaction(['IMMsg'], 'readonly');

// var store = transaction.objectStore('IMMsg');

// var index = store.index('usernameIndex');

// var list = [];

// index.openCursor(onlyKeyRange).onsuccess = function(event) {

// var cursor = event.target.result;

// if (cursor) {

// console.log('cursor.value:', cursor.value);

// list.push(cursor.value);

// cursor.continue();

// } else {

// console.log('list:', list);

// }

// };

// 游标更多用法

// // 匹配所有在 "Bill" 前面的, 包括 "Bill"

// var lowerBoundKeyRange = IDBKeyRange.lowerBound("Bill");

// // 匹配所有在 “Bill” 前面的, 但是不需要包括 "Bill"

// var lowerBoundOpenKeyRange = IDBKeyRange.lowerBound("Bill", true);

// // 匹配所有在'Donna'后面的, 但是不包括"Donna"

// var upperBoundOpenKeyRange = IDBKeyRange.upperBound("Donna", true);

// // 匹配所有在"Bill" 和 "Donna" 之间的, 但是不包括 "Donna"

// var boundKeyRange = IDBKeyRange.bound("Bill", "Donna", false, true);

// 3. 组合索引上使用游标

var onlyKeyRange = IDBKeyRange.only(["张三","李四"]);

var transaction = db.transaction(['IMMsg'], 'readonly');

var store = transaction.objectStore('IMMsg');

var index = store.index('username-otherUsername');

var list = [];

index.openCursor(onlyKeyRange).onsuccess = function(event) {

var cursor = event.target.result;

if (cursor) {

console.log('cursor.value:', cursor.value);

list.push(cursor.value);

cursor.continue();

} else {

console.log('list:', list);

}

};

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值