将json当数据库一样操作的javascript lib |
前段时间工作中用到Json数据,希望将一些简单的增删改查放到客户端来做,这样也能减少服务器端的压力 。分别查找了几个可以对Json进行操作的javascript 类库,最终选定了TAFFY DB 。原因如下: TAFFY DB 基本信息 使用方法: 复制代码 代码如下: <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 //将所有的orderNum 都加1 写到这里,我想这个简单的教程也就算是可以了,已经方便小菜们快速上手这个类库了 。 |