将json当数据库一样操作的javascript lib_javascript技巧

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

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

时间: 2024-10-07 10:18:03

将json当数据库一样操作的javascript lib_javascript技巧的相关文章

asp.net Oracle数据库访问操作类_实用技巧

复制代码 代码如下: using System;using System.Collections;using System.Collections.Specialized;using System.Data;using System.Data.OracleClient;using System.Configuration;using System.Data.Common;using System.Collections.Generic;     /// <summary>    /// 数据访

javascript+json取代数据库和服务器

问题描述 如果一个网站要处理的数据量不是很大,把原来数据库里的数据保存在json里,在浏览器里用javascript操作json,一样可以实现后台php+MySQL的功能吧,这样不就不用数据库和web服务器了吗?这种用javascript+json取代数据库和服务器的网站还算动态网站吗?可行性如何?用处大吗? 问题补充:把json存储在服务端的硬盘上,让javascript在浏览器里运行,当客户端发出请求时,由浏览器里的javascript读取硬盘上的json并将结果返回给客户端,完成交互,这么

JavaScript对Json的增删改属性详解_javascript技巧

使用JS对Json数据的处理,项目遇到需要对Json数据进行相关操作,比如增删改操作,本以为会比较难,网上搜索下,发现还是比较简单的,贴一段代码: <script type="text/javascript"> var json = { "age":24, "name":"cst" }; //修改Json中的age值,因为Json中存在age属性 json["age"] = 30; alert(

jquery ajax 导入json数据进行修改操作

问题描述 jquery ajax 导入json数据进行修改操作 json数据 test.txt [ {"XH":1,"YWName":"业务1","SName":"系统1","QDName":"渠道1","HJNumber":5}, {"XH":2,"YWName":"业务2","

javascript封装的sqlite操作类实例_javascript技巧

本文实例讲述了javascript封装的sqlite操作类.分享给大家供大家参考.具体如下: function sql(name,v,desc,size,tables){ this.db=null; this.name=name; this.v=v; this.desc=desc; this.size=size; this.tables=tables; this.ini(); } sql.prototype.ini=function(){ var self=this; self.db=openD

JavaScript数据库TaffyDB用法实例分析_javascript技巧

本文实例讲述了JavaScript数据库TaffyDB用法.分享给大家供大家参考.具体如下: TaffyDB 是一个免费开源的 JavaScript 库,用于在 Web 上实现一个轻量级的数据访问层,也就是一个简单的数据库. 数据定义: var friends = new TAFFY( [ {name:"Bob", gender:"M", married:"No", age:25, state:"NY", favorite_f

(初学者)eclipse编写java 对数据库的操作问题,不知道问题出在哪里,无法入库

问题描述 (初学者)eclipse编写java 对数据库的操作问题,不知道问题出在哪里,无法入库 代码如下:QueryRunner queryRunner = new QueryRunner(); String sql = ""delete from customers where id = ?""; Connection connection = null; try { connection = JDBCTools.getConnection(); System.

一个对数据库进行操作的程序(之一)

程序|数据|数据库 又抄又改,终于弄出了一个能对数据库进行操作的程序,也算小有所成,鼓励下自已吧......没错,就是盗版! 主要包括以下几个功能页面: db.func:连结数据库的两个函数放在里边了 createtable.php:创建表的页面 input.htm:输入数据的表单 insert.php:表单后台程序 show.php:分页显示的页面 chaxun.php:按ID查询的一个页面 printf.php:修改页面 delete.php:删除一条记录的程序 写到这里先,再复习补充...

用C#对DBF数据库的操作

数据|数据库     现在大部分C#连接数据库都会是sql server .但对一些旧的数据库文件的连接和操作就不太熟了.      今天就有这个问题,要对FOXPRO生成的DBF文件数据库进行操作.      我在CSDN上查了很久,大部分有问题都没很好地回复到这些操作上的问题.      经过我的实验,用ODBC来连接它就可以了.      下面是所用的代码.      都很简单,就是格式上要注意.和用开的查询语句会有很大不同.protected void Page_Load(object