OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

索引:像Mongo一样查询IndexedDB


分享到


分类 行业动态   关键字 开源   发布 1518409521  1400458278563
注意 转载须保留原文链接,译文链接,作者译者等信息。  

作为Riggr SPA库的一部分,我一直在做这个项目,在这个项目中我想用和Mongo同样的交互方式使用IndexedDB。


Index提供的方法允许IndexedDB执行简单查询和操纵。他用UMD封装的格式编写,所以我建立Riggr代码库,以便可以合并其他开发者的修改,它可以用在AMD和non-AMD框架当中。  (注* AMD规范

 

创建一个数据存储

 

使用IndexedDB首先需要一个数据存储。创建数据存储可以通过下面的语句轻松的做到:

indexed('myDB').create();

上面的代码将创建数据存储。如果你在任何兼容的浏览器使用Chrome,或开放开发工具,您应该看到数据存储myDB放在‘resources’选项卡下的 IndexedDB目录下。

 

插入记录

insert()方法可以用来增加单个对象或对象数组。

indexed('myDB').insert({  
    name: 'John Doe'
    email: 'jdoe@email.com'
}, function (err, data) {
    if (err) {
        console.log('Nope.');
    } else {
        console.log(data);
    }
});

上面的代码将会插入一条记录,(如果成功)返回新记录为0的索引数组。

记录自动获得一个_id属性作为他们的UID,所以输出是:

{
'_id': 928376488383,
'name': 'John Doe',
'email': 'jdoe@email.com'
}

要插入多条记录,只需提供一个数组:

indexed('myDB').insert([  
{
name: 'John Doe',
email: 'jdoe@email.com'
}, {
name: 'Jane Smith',
email: 'jsmith@email.com'
}
], function (err, data) {
// Handle response...
});

上面的代码将插入这些记录,并返回一个记录数组。

 

查询记录

find()方法可以从数据存储返回全部或匹配的记录。

indexed('myDB').find(function (err, data) {  
if (err) {
console.log('Nope.');
} else {
console.log(data);
}
});



上面的代码将会从数据存储中返回所有结果。

要查询特定记录,find()方法支持基于对象的查询:

indexed('myDB').find({  
_id: 28972387982
}, function (err, data) {
if (err) {
console.log('Nope.');
} else {
console.log(data);
}
});

上述将返回与_id匹配的记录。

此外,比较查询可以通过$gt(大于),$lt(小于)$gte(大于或等于),$lte(小于或等于)、$like,和$ne(不平等)获得查询对象。例如:

indexed('myDB').find({

someNumber: { $gt : 25} },

function (err, data) {// Handle response...}

);

上面将返回所有属性someNumber大于25的记录。

 

更新记录

update()方法允许更新只匹配或整个数据存储的个人记录。它使用和find()方法相同的查询模式。例如:

indexed('myDB').update({  
_id: 893897389789
}, {
name: 'New Name'
}, function (err, data) {
// Handle response...
});

上面将更新与_id匹配的记录,将这条记录的name属性设置为”New Name”。

通过省略第一个(查询)对象参数,可以更新数据存储中的所有记录。

 

删除记录

delete()方法允许删除匹配的个人记录,或整个数据存储。同样,这使用和find()相同的查询模式。例如:

indexed('myDB').delete(

{ _id: 838973897879},

function (err, data) {// Handle response...}

);

上面的代码将删除与_id匹配的记录。

通过省略第一个(查询)对象参数,数据存储中的所有记录将会被删除。

移除

drop()方法允许完全移除数据存储。

indexed('myDB').drop(); 

上面的代码将从IndexedDB存储删除数据存储。

 

总结

IndexedDB(如果你还没使用它)对于客户端/浏览器数据存储来说是一个很有用的解决方案。虽然对老版本浏览器的支持依然缺乏,使用IDB更新应用程序,甚至作为一个不支持老版本浏览器的特性,IndexedDB绝对是值得的。

IndexedDB仍然很新, 所以使用时要有应有的谨慎。他是在和他的父框架相同的MIT许可下发布的,所以你可以在任何你乐意使用的时候使用它,尽管我想在Riggr库中保留任何棘手的请求或问题,以便我可以更好地管理和应对它们。



Kent Safranski @fluidbyte

 

我开发原始的Web相关的事物,我是一个架构师领导开发TelePharm,这个项目中我与一个了不起的团队开发非常酷的应用程序。

 




原文地址: 点此
社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 编程是一个没有前途的工作
  2. 你已经毁了JavaScript
  3. 是什么让Node.js比Java更快?
  4. 现在,你为什么应该学Node.js
  5. 将JavaScript 作为第一编程语言
  6. 使用Backbone构建精美应用的7条建议
  7. 抛弃jQuery,深入原生的JavaScript
  8. 干嘛不在企业中使用Node.js呢?
  9. 用JavaScript的5个原因
  10. 趣图:在NodeJS程序中有未处理的异常
  11. 用 OnceAir 搭建个人Git/Svn/照片备份服务器,每年电费7块钱

 相关阅读 - 行业动态
  1. 抽象概念不该获得专利权
  2. 图解Node.js流行趋势,Node在路上
  3. Linux应该作为基础教育的一部分
  4. NPM开始招人了
  5. OpenBSD可能因拖欠电费而关闭
  6. 下一阶段的NodeJS:TJ负责Node,NPM可能要收费
  7. 2013年度JavaScript调查
  8. 芝加哥将计算机科学列为主修课
  9. 我为什么想把比特币一把火烧了
  10. 人类只占到互联网流量的40%不到

 关键字 - 开源
  1. HTML5相关格式转换提供商对比—选择困难户的专属福利来啦!
  2. 基于Node.JS的开源CMS系统
  3. 几款开源的图形化Redis客户端管理软件
  4. 使用NodeJS搭建邮件自动发送服务器
  5. Mongoose学习参考文档——基础篇
  6. NodeJS 文件(夹)压缩/解压方案(zip/unzip)-Linux上zip相关命令
  7. 今天的你吃鸡了吗
  8. HexGL用HTML5和WebGL实现的3D赛车游戏
  9. Docker究竟是什么,为什么这么流行,它的优点和缺陷有哪些?
  10. 15个最好用的Node.JS后端框架

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号