indexedDB存储
来源:互联网 发布:mac safari 强制刷新 编辑:程序博客网 时间:2024/06/07 08:31
最近做了套聊天系统,页面采用的是用indexedDB进行本地存储,下面将indexedDB进行了下整理,做个笔记。
1.相比于服务端用到的数据库,indexedDB作为客户端的一种数据库,最大的区别就是作为对象保存数据,用法不难。
第一步:
先解决兼容问题,定义indexedDB
var indexedDB = window.indexedDB || window.msIndexedDB || window.mozIndexedDB || window.webkitIndexedDB ;
第二步打开indexedDB,indexedDB.open(“users”); “users”是数据库的名称,如果有,就打开,没有就创建,都会返回一个对象,对象都有onsuccess 和 onerror事件
var request,database;
request = indexedDB.open(“users”);
request.onerror = function(event) {
alert(event.target.errorCode);
};
request.onsuccess = function(event){
database = event.target.result;
}
第三步,这是我封装的一个
function openDB(name,version,cd){
var version = version || 1;
var request = window.indexedDB.open(name,version);
request.onerror = function(event){
alert(‘indexedDB数据库出错’);
}
request.onsuccess = function(event){
var db = event.target.result;
alert(‘indexedDB数据库成功’);
cd(db);
}
request.onupgradeneeded = function(event) {
var db = event.target.result;
if(!db.objectStoreNames.contains(‘users’)){
var store = db.createObjectStore(‘users’,{keyPath:’username’});
store.createIndex(‘finame’,’firstname’,{unique:true})
}
}
}
db.createObjectStore(‘users’,{keyPath:’username’});
这个是创建对象存储空间
store.createIndex(‘finame’,’firstname’,{unique:true})创建索引
如下我调用的;
var user ={
username:”007”,
firstname:”Jamesd”,
lastname:”Bond”,
password:”foo”
};
如下,调用并将user数据放到indexedDB中
openDB(‘users’,1,function(db){
var transaction = db.transaction(‘users’,’readwrite’);
var store = transaction.objectStore(‘users’);
store.put(user)
})
db.transaction(‘users’,’readwrite’);是加载users存储空间的数据,并给它读写权限
transaction.objectStore(‘users’);objectStore()方法传入存储空间的名称,就可以通过add() put() delete() clear() get()进行传参和请求
openDB(‘users’,1,function(db){
var request = db.transaction(‘users’,’readwrite’).objectStore(‘users’).get(“007”);
request.onerror = function(event) {
alert(event.target.errorCode);
};
request.onsuccess = function(event){
database = event.target.result;
alert(database .firstname)
}
})
获取值有几种方法
1.get()查询
2.openCursor()使用游标查询
var request = db.transaction(‘users’,’readwrite’).objectStore(‘users’).openCursor();
request.onsuccess = function(event){
var cursor = event.target.result;
if(cursor){
if(cursor.key == “007”) {
value = cursor.value;
value.password = “magic”;
updateRequest = cursor.update(value);
//deleteRequest = cursor.delete();
updateRequest.onsuccess = function(event){
//处理成功
}
updateRequest.onerror = function(event){
//处理失败
}
}
cursor.continue();
}else{
console.log(‘Done)
}
}
3通过键范围进行查询
var IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange ;
3.1 only()
var onlyRange = IDBKeyRange.only(‘007’);
3.2
从007开始到最后,含有007
var lowerRange = IDBKeyRange.lowerBound(‘007’);
从开始到009 ,含有009
var upperRange = IDBKeyRange.upperBound(‘009’)
想不包含可以用true;
var boundRange = IDBKeyRange.bound(“007”,”009”,true,true);
4.
request = store.openCursor(boundRange);
request = store.openCursor(boundRange,prev)
request = store.openCursor(boundRange,next)
5.通过索引来查
var store = db.transaction(‘users’,’readwrite’).objectStore(‘users’);
var index = store.index(‘username’);
var request = index.openCursor();
var request = index.openKeyCursor(); 子返回主键
- indexedDB存储
- html5本地存储之indexedDb
- html5存储:indexedDB数据库使用
- H5笔记-本地存储indexedDB
- IndexedDB
- IndexedDB
- IndexedDB
- IndexedDB
- indexedDB
- JavaScript+IndexedDB实现留言板:客户端存储数据
- 本地数据存储之 IndexedDB 实践
- HTML本地存储之IndexedDB(1)
- HTML5本地存储——IndexedDB
- HTML5本地存储——IndexedDB入门
- H5本地存储-indexedDB数据库(一)
- 本地数据存储之 IndexedDB 基本封装
- HTML5 indexedDB前端本地存储数据库实例教程
- HTML5本地存储——IndexedDB(一:基本使用)
- Java String面试题
- 手机淘宝的客户端架构探索之路
- Android 动态解析布局,实现制作多套主题
- 软件版本控制流程
- ps快速制作双重曝光效果
- indexedDB存储
- java调用shell命令并获取执行结果
- Source Insight显示文件完全路径
- tencentSonic框架
- 20170811工作记账流水(2017-08-11 10:00)
- hdfs远程连接hadoop问题与解决
- Android 开发者必知必会的权限管理知识
- React Native中Image报错Missing request token for request: <NSMutableURLRequest: 0x..>{URL:...png}
- mac 下mysql忘记密码解决办法