javascript lib_javascript jsonをデータベースのように操作するテクニック

WBOY
リリース: 2016-05-16 17:18:42
オリジナル
946 人が閲覧しました

私は少し前に仕事で Json データを使用しました。クライアント側でいくつかの簡単な追加、削除、変更、クエリを実行したいと考えています。これにより、サーバー側の負荷も軽減できます。 Json上で動作するJavaScriptライブラリをいくつか探した結果、最終的にTAFFY DBを選択しました。その理由は次のとおりです。
1. BSD オープンソース ライセンスを使用しているため、商用利用の制限を心配する必要はありません。
2. 誰かが更新しており、他のフレームワーク (Jquery、YUI、Dojo など) と競合しません。
3. 追加、削除、変更、検索、並べ替えなどの完全な機能を備えています。 、など。
4. 小さく、圧縮後のサイズはわずか 17k です。
それで、作業が終わったらこの記事を書いて、このクラス ライブラリを皆さんにお勧めしたいと思います。Json クエリの変更を探している一部のプログラマーに役立ち、皆さんとコミュニケーションを取り、学習できることを願っています。

TAFFY DB 基本情報
プロジェクトホームページ: http://taffydb.com/
ホスティングアドレス: https://github.com/typicaljoe/taffydb

使用法:

コードをコピー コードは次のとおりです:

<スクリプト タイプ=" text/javascript" charset="utf-8" src="taffy-min.js">

コードをコピーします コードは次のとおりです:

//空のデータベースを作成します
var db =
//データベースを作成します。データの一部を含む
var db = TAFFY({record:1,text:"example"})
//配列を通じてデータベースを作成します。配列の要素は json 形式のオブジェクトです ( multiple)
var db = TAFFY([{ Record:1,text:"example"}])
// json 形式の文字列を使用してデータを作成します (複数可)
var db = TAFFY('[ {"record":1,"text": "example"}]')

クエリ データ:
最初にデータベースを構築します。後続のすべての例はこのデータベースに基づきます。
コードをコピー コードは次のとおりです。

var db = TAFFY([//Build都市データベース。フィールドは省、都市名、郵便番号、並べ替えを表します。
{ 省:"北京", 都市名:"北京", zipCode:"10001", orderNum:1},
{ 省:"河北" , cityName:"石家荘", zipCode:"10002", orderNum:2},
{ 省:"河北", cityName:"保定", zipCode:"10003", orderNum:3},
{省:"河北", 市名:"承徳", zipCode:"10004", orderNum:4},
]);

1. フィールド値に基づくクエリ
コードをコピー コードは次のとおりです:

var city = db({province:"Hebei"}); //すべてをクエリします。省の値は「河北」データであり、TAFFY 形式でオブジェクトを返します
//console.log この関数は、Firefox の Firebug や Google Chrome 開発者ツールなど、コンソールを備えたブラウザで使用できます ( F12 を押して呼び出します)
for(var i = 0; i //TAFFY の get() 関数を使用して TAFFY オブジェクト データを変換できますjson format
console.log("都市名", citys().get()[i].cityName);
}
console.log("最初のデータは次のとおりです: ", city ().first()); // first() 関数は、最初のデータを json 形式で返すことができます

2. 条件に基づくクエリ (特定の条件については、http://www.taffydb.com/writingqueries


//単一条件クエリ
//順序が 2 より大きいすべてのデータをクエリします
db({ orderNum:{'>':2 }});
//Range query
//次数が 2 より大きく 4 より小さいすべてのデータをクエリします
db({ orderNum:{'> ':2, '
// 2 より大きいデータの並べ替えをクエリします。 4 未満
db({ orderNum:{' >':2}}, { orderNum : {'<':4}});
//指定されたデータ内のクエリ (where in)
//保定市や石家荘市などの都市のデータをクエリします
db({ cityName:['保定','石家荘']});



3. 並べ替え


コードをコピーします

コードは次のとおりです:

//単一条件ソート
db().order("orderNum desc") // orderNum に従って順序を反転
db().order("orderNum"); order
//複数フィールドの並べ替え
db().order("orderNum desc, zipCode asc"); //最初は orderNum の逆順、次に zipCode の正の順です

4. 計算します

コードをコピーします コードは次のとおりです:

//Find最大値
db().max("orderNum"); //orderNum の最大値を取得し、return
//最小値を求める
db().min("orderNum"); //最小の orderNum を取得します
//Sum
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({省:"湖南", 都市名:"長沙", 郵便番号:"10005", orderNum:5});

データを削除


コードをコピー コードは次のとおりです:
//すべて削除data
db().remove();
//orderNum が 5 より大きいデータをすべて削除します
db({orderNum:{'>':5}}).remove();

データの変更


コードのコピー コードは次のとおりです:
//全データの orderNum を 1
db().update({orderNum:1});
に変更します //北京という名前の都市の郵便番号を 100000 に変更します

db({cityName:"Beijing"}).update({zipCode:"100000"})

//すべての orderNum を 1 ずつ増やします

db().update(function(){
this.orderNum = this.orderNum 1;
return this;
});
/*
特記事項: 追加、削除、チェックには問題がない場合がありますが、変更するとエラーが発生します: フィールドが見つかりません
これは TAFFY の小さなバグであるはずですが、この場合に発生しました再初期化するだけです。関数
stringify() を使用する必要があります。この関数は、TAFFY DB 内のすべてのデータを文字列に変換します。このような状況が発生した場合は、次のようにすることができます。
*/
db = TAFFY(db().stringify()); //コンテンツを再初期化します
db().update({column:value});

これを書いていると、この簡単なチュートリアルで十分だと思います。初心者がこのクラス ライブラリをすぐに使い始めるにはすでに便利です。

もちろん、ここでは触れていないさらに複雑な操作がたくさんあり、ファジー クエリなど、自分でクエリする必要があります。プロジェクトの公式ホームページにアクセスしてご覧ください。 (英語)

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート