前段时间工作中用到Json数据,希望将一些简单的增删改查放到客户端来做,这样也能减少服务器端的压力。分别查找了几个可以对Json进行操作的javascript 类库,最终选定了TAFFY DB。原因如下:
1、使用的是BSD开源协议,不用担心商业使用限制。
2、一直在有人进行更新,并且不和其他框架(如Jquery,YUI,Dojo等)冲突
3、功能齐全——增删改查、排序等等都有了。
4、小巧,压缩后只有17k大小。
所以,工作完后,将这篇文章写出来,并推荐这个类库给大家,希望能够帮助到那些正在寻找Json 查询修改的Coder们一些帮主,并和大家一起交流学习。

TAFFY DB 基本信息
项目主页:http://taffydb.com/
托管地址:https://github.com/typicaljoe/taffydb

使用方法:

复制代码 代码如下:
<script type="text/javascript" charset="utf-8" src="taffy-min.js"></script>

复制代码 代码如下:
// 创建空白数据库
var db = TAFFY();
//创建包含一条数据的数据库
var db = TAFFY({record:1,text:"example"})
//通过数组创建数据库,数组的元素为json格式的object(可多条)
var db = TAFFY([{record:1,text:"example"}])
// 通过json格式字符串创建数据(可多条)
var db = TAFFY('[{"record":1,"text":"example"}]')

查询数据:
首先构建一个数据库,以后的示例,都以这个数据库为准。
复制代码 代码如下:
var db = TAFFY([//构建一个城市的数据库,字段分别代表 省份、城市名、邮政编码、排序
{ province:"北京", cityName:"北京", zipCode:"10001", orderNum:1},
{ province:"河北", cityName:"石家庄", zipCode:"10002", orderNum:2},
{ province:"河北", cityName:"保定", zipCode:"10003", orderNum:3},
{ province:"河北", cityName:"承德", zipCode:"10004", orderNum:4},
]);

1、根据字段值进行查询
复制代码 代码如下:
var cities = db({province:"河北"}); //查询所有province 值为"河北"的数据,并返回TAFFY格式的object
//console.log这个函数,只要在有控制台的浏览器中,都可以用,比如火狐的firebug,还有谷歌浏览器的开发人员工具(按F12可呼出)
for(var i = 0; i< cities().count(); i++){
//get()这个TAFFY的函数,可以将TAFFY的object数据转化为json格式
console.log("城市名", cities().get()[i].cityName);
}
console.log("第一条数据为:", cities().first()); // first()这个函数可以返回json格式的第一条数据

2、根据条件查询 (具体条件请查阅 http://www.taffydb.com/writingqueries 的“Comparison Operators”小节

复制代码 代码如下:
//单条件查询
//查询 排序大于 2 的所有数据
db({ orderNum:{'>':2}});
//范围查询
//查询排序大于2 并且 小于 4 的所有数据
db({ orderNum:{'>':2, '<':4}});
//多条件"与" 查询
//查询大于2,并且 小于4 ,并且 省份为 河北省 的数据
db({ orderNum:{'>':2, '<':4}, province:"河北"});
//多条件"或"查询
// 查询 排序 大于2 或者 小于 4 的数据
db({ orderNum:{'>':2}}, { orderNum : {'<':4}});
//指定数据内查询(where in)
// 查询 城市为 保定、石家庄 的数据
db({ cityName:['保定','石家庄']});

3、排序

复制代码 代码如下:
//单条件排序
db().order("orderNum desc"); // 根据orderNum 倒序
db().order("orderNum"); //正序
//多字段排序
db().order("orderNum desc, zipCode asc"); //先按照orderNum倒序,然后按照 zipCode正序

4、计算

复制代码 代码如下:
//求最大值
db().max("orderNum"); //得到orderNum的最大值,并返回
//求最小值
db().min("orderNum"); //得到最小的 orderNum
//求和
db().sum("orderNum"); //得到所有orderNum的和
//得到第一条数据
db().first(); //取第一条数据,并返回json格式
//得到最后一条数据
db().last(); //取最后一条,并返回json格式
//这个可以用来分页 哈哈
db().start(15).limit(20); //从第15条数据开始,往后取20条

5、内置函数查询,有些数据,需要在查询的时候,就做一些计算,稍显复杂,可以通过内置函数来查询

复制代码 代码如下:
db().filter(function(){
return this.cityName.length > 2;
});

添加数据

复制代码 代码如下:
//添加一条数据
db.insert({province:"湖南", cityName:"长沙", zipCode:"10005", orderNum:5});

删除数据

复制代码 代码如下:
//删除全部数据
db().remove();
//删除所有orderNum 大于5的数据
db({orderNum:{'>':5}}).remove();

修改数据

复制代码 代码如下:
//将所有数据 的 orderNum修改为1
db().update({orderNum:1});

//将城市名为北京的 邮政编码修改为 100000
db({cityName:"北京"}).update({zipCode:"100000"})

//将所有的orderNum 都加1
db().update(function(){
this.orderNum = this.orderNum + 1;
return this;
});
/*
特别说明:在有的时候,增删查都没有问题,唯独修改的时候,会碰到报错:找不到字段
这应该是TAFFY的一个小bug,遇到这个情况,重新初始化一下就好,需要用到一个函数
stringify(),这个是将TAFFY DB 的所有数据,变成字符串,所以遇到这种情况,就可以这样做了:
*/
db = TAFFY(db().stringify()); //将内容重新初始化
db().update({column:value});

写到这里,我想这个简单的教程也就算是可以了,已经方便小菜们快速上手这个类库了。
当然,其中还有很多是我没有去提及,需要自己去查询的,比如模糊查询等等,更加复杂的操作。大家可以去项目的官方主页去看。(英文)

详细出处参考:http://www.jb51.net/article/42466.htm

支持Json进行操作的Javascript类库TAFFY DB的更多相关文章

  1. 10大支持移动“触摸操作”的JavaScript框架

    摘要:移动开发行业的发展速度让人目不暇接,也在此大势之下,推出移动网站App成为开发者必经之路,如何让触屏设备 更易使用?如何让网站对触摸手势做出反应并使触摸更友好?所有这一切,皆因JavaScrip ...

  2. javascript - 可编辑表格控件 支持全键盘操作(无JS框架)

    项目中经常会用到表格编辑控件,网上也有不少,但是确实没有完全符合我要求的, 自己写一个吧! 1.该控件支持 数据显示列,文本编辑列,选择列,下拉列,索引列,删除列 六种列类型 2.支持全键盘操作,自定 ...

  3. CEF 支持JSON操作

    转载:https://blog.csdn.net/foruok/article/details/50687864(解析json) 转载:https://blog.csdn.net/foruok/art ...

  4. javascript json对象操作(基本增删改查)

    /** * Json对象操作,增删改查 * * @author lellansin * @blog www.lellansin.com * @version 0.1 * * 解决一些常见的问题 * g ...

  5. javascript 框架、根基技巧、布局、CSS、控件 JavaScript 类库

    预筹备之 JavaScript 今朝支流的 JavaScript 框架排名中,jQuery 和 Ext 可算是佼佼者,得到了用户的普遍好评.海内的一些框架许多也是模仿 jQuery 对 JavaScr ...

  6. Json——js和C#对Json的操作

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式.博主记得几年前在华为外包项目中有一个和Android应用交互的需求,Andr ...

  7. 19个非常有用的Javascript类库

    Blackbird是一款非常酷的JavaScript调试工具,带有一个漂亮的界面显示和过滤调试信息. http://www.gscottolson.com/blackbirdjs/ Treesaver ...

  8. JS和C#对Json的操作

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式.博主记得几年前在华为外包项目中有一个和Android应用交互的需求,Andr ...

  9. MySQL json 类型操作快速入门

    MySQL 5.7.8开始支持 json类型. create table t(id int,js json,PRIMARY KEY (`id`)) 插入数据insert into t values(1 ...

随机推荐

  1. Busybox下mdev配置说明

    [TOC] mdev说明 mdev是busybox自带的一个简化版的udev,适合嵌入式应用场合.其具有使用简单的特点.它的作用就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需要的节点 ...

  2. [转]Worksheet.Change Event (Excel)

    本文转自:https://msdn.microsoft.com/en-us/library/office/ff839775.aspx#AboutContributor Example   The fo ...

  3. uva 839 Not so Mobile-S.B.S.

    Before being an ubiquous communications gadget, a mobilewas just a structure made of strings and wir ...

  4. 如何用dos命令运行testng

    写好的自动化程序怎么让它运行呢,总不能每次都启动eclipse吧,下面就先介绍一种用dos命令运行testNG的方法. 1.把项目打成jar吧,我用的是Fat jar工具. 2.在电脑的某个盘建一个文 ...

  5. [转载]ExtJs4 笔记(10) Ext.tab.Panel 选项卡

    作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...

  6. excel相关

    1.excel怎样筛选重复数据 打开Excel文件,选中待处理的数据区域,然后分别点击菜单开始--条件格式--突出显示单元格规则--重复值. 确认以Excel默认的格式突出显示重复值.之后,重复的数据 ...

  7. 谈谈自己对java的学习看法

    从明天起,开始整理java的基础知识,进行巩固学习. 今天呢,谈谈自己的一点想法.很多人不知道java怎么学,学什么,有的是直接在网上找一些视频来看,不懂的地方到处跑群里问,结果效果并不是太好,怎么办 ...

  8. 关于OAuth2.0的文章收集

    http://blog.csdn.net/seccloud/article/details/8192707

  9. NSProgress

    苹果公司在 iOS 7 and OS X 10.9引入NSProgress类,目标是建立一个标准的机制用来报告长时间运行的任务的进度.NSProgress引入之后,其最重要的作用是可以在一个app的多 ...

  10. XCode的 Stack Trace,调试时抛出异常,定位到某一行代码

    在Xcode调试程序的时候,总是会出现不知道错误在什么地方的问题,很是捉急,现在又一个办法,可以具体定位到错误行的代码,试一下吧?超级好用 操作很简单: 1.在XCode界面中按cmd + 6快捷键, ...