前段时间工作中用到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. emacs24下使用jedi对python编程进行补全

    在开始前先装好pip和virtualenv(见pip的安装一文),另需安装好make 1.emacs下安装: epc deferred.el auto-complete 使用M-x package-i ...

  2. Gradle深入与实战(转)

    转自:NO END FOR LEARNINGhttp://benweizhu.github.io/blog/2015/01/31/deep-into-gradle-in-action-1/ 什么是构建 ...

  3. BaseDao

    public class BaseDao { private static Log logger = LogFactory.getLog(BaseDao.class); // 查询数据 public ...

  4. 记一次Web应用CPU偏高

    LZ开发的一个公司内部应用供查询HIVE数据使用.部署上线后总是会出现CPU偏高的情况,而且本地测试很难重现.之前出现几次都是通过直接重启后继续使用,因为是内部使用,重启一下也没有很大影响(当然,每次 ...

  5. UEdit初始化加载内容偶尔失败,解决

    var ue1 = UE.getEditor('aaa',{toolbars: [],autoHeightEnabled: false}); $(function(){ var content =$( ...

  6. A python tool to static sim.log duration time

    When working ALU IMS Patch team, we need to static the SU duration to add it to the patch report, th ...

  7. tarjan算法求割点cojs 8

    tarjan求割点:cojs 8. 备用交换机 ★★   输入文件:gd.in   输出文件:gd.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] n个城市之间有通讯网 ...

  8. 写一个iOS VoIP应用需要知道什么?

    IOS编程--VoIP解密 一般来说, IOS很少给App后台运行的权限. 仅有的方式就是 VoIP. IOS少有的为VoIP应用提供了后台socket连接,定期唤醒并且随开机启动的权限.而这些就是I ...

  9. win8程序开机自启动管理

    主要介绍利用系统自身的工具来管理开机自启动,而非第三方的工具,自己了解了,也写出来分享给大家@.·.@ 1.程序设置开机自启动 a. 打开计算机资源管理器-->进入"C:\Progra ...

  10. codeforces 422A A. Borya and Hanabi(暴力)

    题目链接: A. Borya and Hanabi time limit per test 2 seconds memory limit per test 256 megabytes input st ...