背景には、欠失検索データベース接続変更操作にMongoDBをNode.jsの

 

第一歩

NPMを使用してMongoDBのモジュールをダウンロード

第二のステップ

インポート背景MongoDBのモジュール

注意:モジュールが最初に導入され、独自のフォルダがモジュールをnode_modules見つけ、とされていない場合は、グローバル(ノードのインストールディレクトリ)に行くことになります

HTTP =は( "HTTP"を必要としましょう)。

MongoDBのは=( 'MongoDBは')を必要とせ; //インポートモジュールのMongoDB
= MongoClientレットmongodb.MongoClient; //データベースオブジェクトへの接続を作成します

 

バックグラウンドでのデータベースの操作後にデータベースに接続することができます。

ネイティブに書かれたバックグラウンドサービス、コードの解釈

必要とHTTP = LET(「HTTP」);
 // インポートモジュールはMongoDBの 
のletにMongoDBを=必要(「MongoDBは」);      // 導入モジュールは最初、自分のフォルダにモジュールをnode_modules見つけ、そうでない場合は、に行きますグローバル(ノードのインストールディレクトリ)を見つけるために
、// データベースへの接続を作成すると、オブジェクト 
のlet MongoClient = mongodb.MongoClientを、

letのサーバー = http.createServer(); 

server.on( "要求"、(REQ、RES)=> { 
    のlet database_url = "MongoDBの:// localhostを:27017 /";    // のアドレスデータベース 
    のletデータベース名= "学校";     // データベースの名前 
    のlet URLのdatabase_url + = データベース名; //アドレスデータベース名データベースプラス

    MongoClient.connect(URL、( ERR、DB) =>{//データベースに接続
         // 接続が成功した後、データベース接続不良ERRが値DBを持っていますエラーメッセージを誤ることは、データのインスタンスである、すべての操作は、この例では完了までに行われる
           IF (ERR){ 
              にconsole.log (「データベース接続失敗" );
               を返す; 
          } 
          はconsole.log( '接続成功' );
           VAR OBJ = {"名前":"ボブへ""年齢"120、 "趣味":" スリープA」、 、 "Aを食べる"、 "スコア":{ "宇文":590であり、 "shuxue":800 }} 
          (db.collection。 "学生")insertMary(OBJ、(ERR、結果)=> {//学校データベースコレクション、挿入生徒データ
             IF (ERR){ 
                コンソール。ログイン( 「挿入が失敗した」);
                 を返します;
            } 
            にconsole.log(結果);   //オブジェクト、データベースに関する有し、データを挿入するための方法および属性           res.endを(result.toString())
           db.Close(); // db.Close(); //閉じられ、使用が完了した後たびにデータベース操作をデータベースを閉じ
       }); 
});
})server.listen(
3000)。

 

関連する方法のCRUD

データベースは、複数組を有していてもよく、セットは複数のデータアレイのセット、データ・オブジェクト・フォーマット(JSON)複数のメモリを有することができます

 データベースが設定されていない場合db.collection(「収集名」)メソッドは、その後、検索時間を変更するための追加や削除は、デフォルトのコレクションで追加されます

複数のデータの挿入

db.collection( "コレクション名").insertMany(挿入されたデータ(ターゲット・フォーマット)、関数(ERR、結果){
         IF)ERR(スローERR;
          
        db.Close(); //データベースの動作を閉じ
    })。

 データの挿入

db.collection( "コレクション名")。insertOne(データ挿入(ターゲットフォーマット)、機能(ERR、RES){     IF)ERR(スローERR;はconsole.log( "成功への文書" );      db.Close() ; });


クエリデータ

。db.collection( "収集名")検索(検索データ(オブジェクト))のtoArray(。機能(ERR、結果){ // 見つかったデータを返す
        IF(ERR)スローERR; 
        はconsole.log(結果を)。 //は、パケットの配列オブジェクト、オブジェクトを見つけるために検索に準拠したデータを返す
        。)(db.Closeを
    )}。

更新データ(修正データ)

 

更新

。db.collection(以下"サイト")updateOne(置き換えデータ(オブジェクト)、更新されたデータ(オブジェクト)、機能(ERR、RES){
         IF(ERR)スローERR; 
        はconsole.log( "正常に更新文書" ) ; 
        db.Close(); 
    });

注:修正データのみ部分データのためのデータのセットを修正することができます

更新複数

    VAR whereStr = { "タイプ": 'EN'};   // クエリ
    するvar updateStr = { $のSET:{ "URL": "https://www.runoob.com" }}; 
    dbo.collection(設定名) .updateMany(whereStr、updateStr、関数(ERR、RES){
         IF)ERR(スローERR; 
         はconsole.log(res.result.nModified + "ドキュメントが記事更新される" ); //result.nModifiedは更新の数です。
        db.Close(); 
    });

$見つからない場合、それは対応するデータを作成する設定し、挿入セット

 更新する$解除$セットに置き換えられます、それはフィールドを削除します

 

データを削除します。

条件の削除最初のデータを

  db.collection(コレクション名)。deleteOne((オブジェクト)、検索する条件関数(ERR、OBJ){
         IF)ERR(スローERR; 
        はconsole.log( "ドキュメントが正常に削除する" ); 
        db.Close(); 
    }) ;

 

複数のデータを削除します。

すべてのデータを削除適格

  。db.collection(コレクション名)deleteMany(検索条件(オブジェクト)、機能(ERR、OBJ){
         IF(ERR)スローERR; 
        はconsole.log(obj.result.n + "記事の文書が削除されました" ); 
        デシベル。クローズ(); 
    });

 

クエリページ

。dbo.collection(設定名).find()スキップ(2)限界(2).toArray(関数(ERR、結果){
         IF(ERR)スローERR; 
        にconsole.log(結果); // 問い合わせに戻る結果処理されたデータタブ後 
        ; db.Close()
  })。

クエリにすべてのデータ(NUM)をスキップし、スキップnumがデータのクエリ結果を返します。

すべてのデータ限界(NUM)は、照会データのNUMを返します

 ページングクエリはデータが大きすぎると、部分的に検索使用することができます

 

DAO層感謝と梱包

DAO層理由

Javaで起こされ、JavaのDAOは、非常に大きなを書くことができます

データベース層への特別な接続を行い、その後、背景にアクセスするためのインタフェースを公開

 

DAOロジック

DAO層設計は、まず、データ・トラフィックを処理するために、このインタフェースモジュールを呼び出すことができ、インターフェースDAOに設計されています

このインタフェースの実装クラスを気にせず、それは非常に明確な構造、データソースのDAOの層構成されたクラスです。

 

DAO層の効果

主な仕事は、データの永続化層を行うことですタスクの一部との連携の責任は、このデータベースにカプセル化されています

要するに:それはモジュールの導入によって得られる、データベースの操作のパッケージ方法は、バックグラウンド動作のためのインターフェースは、中間層と、中間データベースで取得され、露出します

 

 

ノードでは、DAO層も非常に大きく書くことができます。

以下は、のMongoDBの接続ノードDAO層であります

 

VaRの MongoDBの=( "MongoDBの"必要);
 VAR MongoClient = mongodb.MongoClient; 

機能_connectDB(コールバック){ 
    LETのdatabase_url = "のMongoDB:// localhostの:27017 /";    // のアドレスデータベース 
    LETデータベース名= "データ";     / / データベース名 
    LETのURLのdatabase_url + = データベース名; 
    MongoClient.connect(URL、関数(ERR、DB){
         IF (ERR){ 
            コールバック(ERR、NULL );
             リターン; 
        } 
        コールバック(ERR、DB); 
    })
} 

// 露出//挿入データインターフェース
exports.insertOne = 関数(COLLECTIONNAME、JSON、コールバック){ 
    _connectDB(関数(ERR、DB){ 
        db.collection(COLLECTIONNAME).insertOne(JSON、(ERR、結果) => {
             // IF(ERR){ 
            //      コールバック(ERR、ヌル)
            //      返す; 
            // } 
            コールバック(ERR、結果); 
            db.close(); 
        }); 
    })
} 

// 删除的接口 
exports.deleteMany = 関数(COLLECTIONNAME、JSON、コールバック){ 
    _connectDB(関数(ERR、DB){ 
        db.collection(COLLECTIONNAME).deleteMany(JSON、関数(ERR、結果){ 
            コールバック(ERR、結果); 
            db.Close(); 
        })
    })
} 

// 更新データ 
exports.updateMany = 関数(COLLECTIONNAME、json1、 json2、コールバック){ 
    _connectDB(関数(ERR、DB){ 
        db.collection(COLLECTIONNAME).updateMany(json1、json2、関数(ERR、結果){ 
            コールバック(ERR、結果); 
            db.Close(); 
        })
    } )
} 





// ページパラメータを渡す必要ができない、のは、私は改ページを必要としないとしましょう exports.find = 機能を(COLLECTIONNAME、JSON、C、D){ VARの結果=[]; IF(== arguments.lengthを3。){ // この時間が必要とされないページング VARコールバック= C; VAR limitnum = 0 ; VARの skipnum = 0 ; } そう IF(== arguments.lengthを4。){ / / パラメータcを被験者に渡されると仮定{ // pageamount:10、 // ページ:0 // } VARコールバック= D; // 最後に、コールバック関数である VaRの引数の=のC; // 条件タブ / / 記事番号を省略 するvarargs.page || * = args.pageamount skipnum 0(ERR){; // 数値見つかり VAR limitnum args.pageamount || = 0 ; // ソート VARソートargs.sort || = {}; } { スロー 新しい新しいエラーが発生しました(「引数の数が3以上である必要があります見つけます4 ' リターン; } _connectDB(関数(ERR、DB){ VARのカーソル= db.collection(COLLECTIONNAME).find(JSON).SKIP(skipnum).limit(limitnum).sort(ソート) cursor.each(関数(ERR、DOC){ IF コールバック(ERR、NULL ); db.close(); リターン } もし(!DOC = NULL ){ result.push(DOC)。 } { コールバック(NULL 、結果)。 db.close() } }) }) }

通訳ページングクエリパッケージ

COLLECTIONNAME:データ・セット名を照会する必要があります
JSON:オブジェクトの検索条件
C、Dは、2例
1ないページネーションクエリ場合、Dパラメータは必要としない、及びCパラメータは、コールバックに渡される
2ページングクエリ、着信Cは、オブジェクトは、Dのコールバック、ページングを照会することです関数
この時点では、数値ではなく、C着信オブジェクトの形でなければなりません
// Cオブジェクトテンプレート
C = {

       pageamount:10、//数値スキップ
        0 @ディスプレイの数を:ページ

}

 

ページングクエリは区別します

すべてのデータに基づいて、フロントページの偽のすべてを介してデータベースからすべてのデータを取得するために、バックグラウンド、その後、そのままフロントデスクへのページへ。
背景偽のページングが舞台裏のすべてをデータベースとそれに渡されたパラメータに基づいて、フロントエンドから来るデータのすべてを取得するには、いくつかのデータのフロントエンドに戻りました。
本当にページは、そのコンテンツの伝送を減らすこと、データベースに物事を行います。

 
 

 

 

 

おすすめ

転載: www.cnblogs.com/wxyblog/p/11360840.html