欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

將json當(dāng)數(shù)據(jù)庫一樣操作的javascript lib

 更新時(shí)間:2013年10月28日 10:22:13   作者:  
使用javascript操作JSON的類庫TAFFY DB,具體介紹了:查詢數(shù)據(jù)、添加數(shù)據(jù)、刪除數(shù)據(jù)、修改數(shù)據(jù)。

前段時(shí)間工作中用到Json數(shù)據(jù),希望將一些簡(jiǎn)單的增刪改查放到客戶端來做,這樣也能減少服務(wù)器端的壓力。分別查找了幾個(gè)可以對(duì)Json進(jìn)行操作的javascript 類庫,最終選定了TAFFY DB。原因如下:
1、使用的是BSD開源協(xié)議,不用擔(dān)心商業(yè)使用限制。
2、一直在有人進(jìn)行更新,并且不和其他框架(如Jquery,YUI,Dojo等)沖突
3、功能齊全——增刪改查、排序等等都有了。
4、小巧,壓縮后只有17k大小。
所以,工作完后,將這篇文章寫出來,并推薦這個(gè)類庫給大家,希望能夠幫助到那些正在尋找Json 查詢修改的Coder們一些幫主,并和大家一起交流學(xué)習(xí)。

TAFFY DB 基本信息
項(xiàng)目主頁:http://taffydb.com/
托管地址:https://github.com/typicaljoe/taffydb

使用方法:

復(fù)制代碼 代碼如下:

<script type="text/javascript" charset="utf-8" src="taffy-min.js"></script>

復(fù)制代碼 代碼如下:

// 創(chuàng)建空白數(shù)據(jù)庫
var db = TAFFY();
//創(chuàng)建包含一條數(shù)據(jù)的數(shù)據(jù)庫
var db = TAFFY({record:1,text:"example"})
 //通過數(shù)組創(chuàng)建數(shù)據(jù)庫,數(shù)組的元素為json格式的object(可多條)
var db = TAFFY([{record:1,text:"example"}])     
// 通過json格式字符串創(chuàng)建數(shù)據(jù)(可多條)   
var db = TAFFY('[{"record":1,"text":"example"}]')

查詢數(shù)據(jù):
首先構(gòu)建一個(gè)數(shù)據(jù)庫,以后的示例,都以這個(gè)數(shù)據(jù)庫為準(zhǔn)。
復(fù)制代碼 代碼如下:

var db = TAFFY([//構(gòu)建一個(gè)城市的數(shù)據(jù)庫,字段分別代表 省份、城市名、郵政編碼、排序
    { 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、根據(jù)字段值進(jìn)行查詢
復(fù)制代碼 代碼如下:

var cities = db({province:"河北"});  //查詢所有province 值為"河北"的數(shù)據(jù),并返回TAFFY格式的object
//console.log這個(gè)函數(shù),只要在有控制臺(tái)的瀏覽器中,都可以用,比如火狐的firebug,還有谷歌瀏覽器的開發(fā)人員工具(按F12可呼出)
for(var i = 0; i< cities().count(); i++){
    //get()這個(gè)TAFFY的函數(shù),可以將TAFFY的object數(shù)據(jù)轉(zhuǎn)化為json格式
    console.log("城市名", cities().get()[i].cityName);
}
console.log("第一條數(shù)據(jù)為:", cities().first()); // first()這個(gè)函數(shù)可以返回json格式的第一條數(shù)據(jù)

2、根據(jù)條件查詢 (具體條件請(qǐng)查閱 http://www.taffydb.com/writingqueries 的“Comparison Operators”小節(jié)

復(fù)制代碼 代碼如下:

//單條件查詢
//查詢 排序大于 2 的所有數(shù)據(jù)
db({ orderNum:{'>':2}});
//范圍查詢
//查詢排序大于2 并且 小于 4 的所有數(shù)據(jù)
db({ orderNum:{'>':2, '<':4}});
//多條件"與" 查詢
//查詢大于2,并且 小于4 ,并且 省份為 河北省 的數(shù)據(jù)
db({ orderNum:{'>':2, '<':4}, province:"河北"});
//多條件"或"查詢
// 查詢 排序  大于2 或者 小于 4 的數(shù)據(jù)
db({ orderNum:{'>':2}}, { orderNum : {'<':4}});
//指定數(shù)據(jù)內(nèi)查詢(where in)
// 查詢 城市為  保定、石家莊 的數(shù)據(jù)
db({ cityName:['保定','石家莊']});

3、排序

復(fù)制代碼 代碼如下:

//單條件排序
db().order("orderNum desc");    // 根據(jù)orderNum 倒序
db().order("orderNum"); //正序
//多字段排序
db().order("orderNum desc, zipCode asc"); //先按照orderNum倒序,然后按照 zipCode正序

4、計(jì)算

復(fù)制代碼 代碼如下:

//求最大值
db().max("orderNum"); //得到orderNum的最大值,并返回
//求最小值
db().min("orderNum"); //得到最小的 orderNum
//求和
db().sum("orderNum"); //得到所有orderNum的和
//得到第一條數(shù)據(jù)
db().first();  //取第一條數(shù)據(jù),并返回json格式
//得到最后一條數(shù)據(jù)
db().last(); //取最后一條,并返回json格式
//這個(gè)可以用來分頁 哈哈
db().start(15).limit(20); //從第15條數(shù)據(jù)開始,往后取20條

5、內(nèi)置函數(shù)查詢,有些數(shù)據(jù),需要在查詢的時(shí)候,就做一些計(jì)算,稍顯復(fù)雜,可以通過內(nèi)置函數(shù)來查詢

復(fù)制代碼 代碼如下:

db().filter(function(){
    return this.cityName.length > 2;
});

添加數(shù)據(jù)

復(fù)制代碼 代碼如下:

//添加一條數(shù)據(jù)
db.insert({province:"湖南", cityName:"長(zhǎng)沙", zipCode:"10005", orderNum:5});

刪除數(shù)據(jù)

復(fù)制代碼 代碼如下:

//刪除全部數(shù)據(jù)
db().remove();
//刪除所有orderNum 大于5的數(shù)據(jù)
db({orderNum:{'>':5}}).remove();

修改數(shù)據(jù)

復(fù)制代碼 代碼如下:

//將所有數(shù)據(jù) 的 orderNum修改為1
db().update({orderNum:1});

//將城市名為北京的 郵政編碼修改為 100000
db({cityName:"北京"}).update({zipCode:"100000"})

//將所有的orderNum 都加1
db().update(function(){
    this.orderNum = this.orderNum + 1;
    return this;
});
/*
特別說明:在有的時(shí)候,增刪查都沒有問題,唯獨(dú)修改的時(shí)候,會(huì)碰到報(bào)錯(cuò):找不到字段
這應(yīng)該是TAFFY的一個(gè)小bug,遇到這個(gè)情況,重新初始化一下就好,需要用到一個(gè)函數(shù)
stringify(),這個(gè)是將TAFFY DB 的所有數(shù)據(jù),變成字符串,所以遇到這種情況,就可以這樣做了:
*/
db = TAFFY(db().stringify()); //將內(nèi)容重新初始化
db().update({column:value});

寫到這里,我想這個(gè)簡(jiǎn)單的教程也就算是可以了,已經(jīng)方便小菜們快速上手這個(gè)類庫了。
當(dāng)然,其中還有很多是我沒有去提及,需要自己去查詢的,比如模糊查詢等等,更加復(fù)雜的操作。大家可以去項(xiàng)目的官方主頁去看。(英文)

相關(guān)文章

最新評(píng)論