• 支持Json进行操作的Javascript类库TAFFY DB


    前段时间工作中用到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

  • 相关阅读:
    Android学习笔记04-Activity及Activity生命周期
    Android学习笔记03-学习过程中碰到的一些问题及解决方法
    Android学习笔记--生命周期
    Android学习笔记01
    Android学习笔记--项目框架介绍
    Android学习笔记- Animation动画
    Android学习笔记02-AndroidManifest.xml文件解析
    cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded 解决方法
    jvm 03-java堆内存模型
    jvm 02-java对象访问模式
  • 原文地址:https://www.cnblogs.com/bobzhangfw/p/3658508.html
Copyright © 2020-2023  润新知