最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

TAFFY DB 基本信息
項(xiàng)目主頁(yè):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ù)庫(kù)
var db = TAFFY();
//創(chuàng)建包含一條數(shù)據(jù)的數(shù)據(jù)庫(kù)
var db = TAFFY({record:1,text:"example"})
 //通過(guò)數(shù)組創(chuàng)建數(shù)據(jù)庫(kù),數(shù)組的元素為json格式的object(可多條)
var db = TAFFY([{record:1,text:"example"}])     
// 通過(guò)json格式字符串創(chuàng)建數(shù)據(jù)(可多條)   
var db = TAFFY('[{"record":1,"text":"example"}]')

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

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

var cities = db({province:"河北"});  //查詢(xún)所有province 值為"河北"的數(shù)據(jù),并返回TAFFY格式的object
//console.log這個(gè)函數(shù),只要在有控制臺(tái)的瀏覽器中,都可以用,比如火狐的firebug,還有谷歌瀏覽器的開(kāi)發(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ù)條件查詢(xún) (具體條件請(qǐng)查閱 http://www.taffydb.com/writingqueries 的“Comparison Operators”小節(jié)

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

//單條件查詢(xún)
//查詢(xún) 排序大于 2 的所有數(shù)據(jù)
db({ orderNum:{'>':2}});
//范圍查詢(xún)
//查詢(xún)排序大于2 并且 小于 4 的所有數(shù)據(jù)
db({ orderNum:{'>':2, '<':4}});
//多條件"與" 查詢(xún)
//查詢(xún)大于2,并且 小于4 ,并且 省份為 河北省 的數(shù)據(jù)
db({ orderNum:{'>':2, '<':4}, province:"河北"});
//多條件"或"查詢(xún)
// 查詢(xún) 排序  大于2 或者 小于 4 的數(shù)據(jù)
db({ orderNum:{'>':2}}, { orderNum : {'<':4}});
//指定數(shù)據(jù)內(nèi)查詢(xún)(where in)
// 查詢(xún) 城市為  保定、石家莊 的數(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è)可以用來(lái)分頁(yè) 哈哈
db().start(15).limit(20); //從第15條數(shù)據(jù)開(kāi)始,往后取20條

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

復(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;
});
/*
特別說(shuō)明:在有的時(shí)候,增刪查都沒(méi)有問(wèn)題,唯獨(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});

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

相關(guān)文章

  • 微信小程序全局文件的使用詳解

    微信小程序全局文件的使用詳解

    在小程序開(kāi)發(fā)時(shí),每個(gè)頁(yè)面都對(duì)應(yīng)一個(gè)目錄,每個(gè)目錄又分別有wxml、wxss、js和json四個(gè)文件。詳細(xì)說(shuō)明可查看后續(xù)文章介紹,本文主要詳解全局文件
    2022-08-08
  • 微信小程序在Tab的icon上顯示消息數(shù)量的方法

    微信小程序在Tab的icon上顯示消息數(shù)量的方法

    這篇文章主要介紹了微信小程序在Tab的icon上顯示消息數(shù)量的方法,首先,在app.json文件中,找到對(duì)應(yīng)的tabBar配置,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • ES6?Promise.all的使用方法以及其細(xì)節(jié)詳解

    ES6?Promise.all的使用方法以及其細(xì)節(jié)詳解

    Promise對(duì)象用于表示一個(gè)異步操作的最終完成(或失敗)及其結(jié)果值,下面這篇文章主要給大家介紹了關(guān)于ES6?Promise.all的使用方法以及其細(xì)節(jié)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 詳解uniapp的全局變量實(shí)現(xiàn)方式

    詳解uniapp的全局變量實(shí)現(xiàn)方式

    這篇文章主要介紹了詳解uniapp的全局變量實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 小程序開(kāi)發(fā)?page-container?頁(yè)面容器彈出對(duì)話(huà)框功能的實(shí)現(xiàn)

    小程序開(kāi)發(fā)?page-container?頁(yè)面容器彈出對(duì)話(huà)框功能的實(shí)現(xiàn)

    這篇文章主要介紹了小程序開(kāi)發(fā)?page-container?頁(yè)面容器,彈出對(duì)話(huà)框,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • layui 監(jiān)聽(tīng)彈窗關(guān)閉并刷新父級(jí)table的場(chǎng)景分析

    layui 監(jiān)聽(tīng)彈窗關(guān)閉并刷新父級(jí)table的場(chǎng)景分析

    這篇文章主要介紹了layui 監(jiān)聽(tīng)彈窗關(guān)閉并刷新父級(jí)table的場(chǎng)景分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-07-07
  • 深度解析TypeScript裝飾器

    深度解析TypeScript裝飾器

    TypeScript?是一種強(qiáng)類(lèi)型的超集?JavaScript,它為開(kāi)發(fā)者提供了靜態(tài)類(lèi)型檢查、代碼提示以及更好的可維護(hù)性,本文將深入解析?TypeScript?裝飾器,從基礎(chǔ)概念到高級(jí)用法,逐步探討其作用、原理以及實(shí)際應(yīng)用場(chǎng)景,以幫助你更好地理解和利用這一功能,需要的朋友可以參考下
    2023-09-09
  • 一些老手都不一定知道的JavaScript技巧

    一些老手都不一定知道的JavaScript技巧

    這篇文章主要介紹了一些老手都不一定知道的JavaScript技巧,需要的朋友可以參考下
    2014-05-05
  • 基于JavaScript實(shí)現(xiàn)留言板功能

    基于JavaScript實(shí)現(xiàn)留言板功能

    這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)留言板功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • JavaScript?Echarts柱狀圖label優(yōu)化中問(wèn)題針對(duì)講解

    JavaScript?Echarts柱狀圖label優(yōu)化中問(wèn)題針對(duì)講解

    這篇文章主要介紹了JavaScript?Echarts柱狀圖label優(yōu)化中問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-12-12

最新評(píng)論

永济市| 博乐市| 西畴县| 渭南市| 太仆寺旗| 兴义市| 南京市| 甘孜| 漳州市| 巴彦淖尔市| 郑州市| 长泰县| 沾益县| 静乐县| 禹城市| 临湘市| 青浦区| 浦北县| 阳高县| 北票市| 开化县| 汤原县| 托克逊县| 湾仔区| 湘阴县| 临沭县| 济阳县| 遵化市| 察雅县| 什邡市| 洛浦县| 洮南市| 新津县| 营口市| 同德县| 孝感市| 钟祥市| 通渭县| 华宁县| 阿克陶县| 平阳县|