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

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

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

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

TAFFY DB 基本信息
項目主頁: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)建一個數(shù)據(jù)庫,以后的示例,都以這個數(shù)據(jù)庫為準(zhǔn)。
復(fù)制代碼 代碼如下:

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

2、根據(jù)條件查詢 (具體條件請查閱 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、計算

復(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格式
//這個可以用來分頁 哈哈
db().start(15).limit(20); //從第15條數(shù)據(jù)開始,往后取20條

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

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

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

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

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

//添加一條數(shù)據(jù)
db.insert({province:"湖南", cityName:"長沙", 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;
});
/*
特別說明:在有的時候,增刪查都沒有問題,唯獨修改的時候,會碰到報錯:找不到字段
這應(yīng)該是TAFFY的一個小bug,遇到這個情況,重新初始化一下就好,需要用到一個函數(shù)
stringify(),這個是將TAFFY DB 的所有數(shù)據(jù),變成字符串,所以遇到這種情況,就可以這樣做了:
*/
db = TAFFY(db().stringify()); //將內(nèi)容重新初始化
db().update({column:value});

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    小程序開發(fā)?page-container?頁面容器彈出對話框功能的實現(xiàn)

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

    layui 監(jiān)聽彈窗關(guān)閉并刷新父級table的場景分析

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

    深度解析TypeScript裝飾器

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

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

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

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

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

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

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

最新評論

高邑县| 莱州市| 正宁县| 项城市| 资溪县| 汉沽区| 松阳县| 华容县| 武清区| 泽州县| 青阳县| 陈巴尔虎旗| 静安区| 怀仁县| 沙田区| 贞丰县| 武陟县| 泰顺县| 二连浩特市| 盐池县| 越西县| 昆山市| 清涧县| 浮山县| 沾化县| 广安市| 合山市| 乐山市| 乐安县| 晋州市| 报价| 五大连池市| 子长县| 潮州市| 铁力市| 武鸣县| 大港区| 韶关市| 鄂温| 延吉市| 达尔|