nodeJSでは、mogdbを利用してデータベース操作を行います.

2916 ワード

引用が必要なnode_modules
npm  install mongodb
ここで参照しているmongodbモジュールのバージョンは1.4.12です.
一.初期化mogdb.
var mongodb = require('mongodb');

var MongoClient = require('mongodb').MongoClient;
var db;
var util = require('util');  
// Initialize connection once
MongoClient.connect("mongodb://localhost:27017/threepigs", function(err, database) {
    if(err) throw err;
        db = database;
});
まず、mongodbモジュールを参照して、MongoClientオブジェクトを獲得します.
オブジェクトからconnectメソッドを呼び出してデータベース接続を取得します.注意connectメソッドはデフォルトで5つのデータベース接続を含む接続を作成します.
二.CRUD操作.
すべての操作でパラメータのデータフォーマットはBSON形式です.
1.クエリ文
db.collection(tableName).find({'XXXX': xxxx},{sort: {'XXXX': 1}}).toArray(function(err, docs) {
            if (err) throw err;
            return ;
        });
find関数を使用して、ドキュメントの内容を調べます.find()の最初のパラメータはクエリーパラメータです.2番目のパラメータは結果セットに対して操作します.
2.語句を挿入する
db.collection(tableName).insert( {'XXXX': xxxx}, {w:1}, function(err, objects) {
                if (err) throw err;
                });
insert関数を使ってドキュメントを挿入します.insert()最初のパラメータは挿入されたデータです.
3.更新操作
db.collection(tableName).update({'XXXX': xxxx}, {$set: {'XXXX': xxxx}}, {w:1,upsert:true}, function(err) {
                    if (err) console.warn(err.message);
                });
udate関数を使ってドキュメントを更新します.最初のパラメータは更新されたデータで、setパラメータは更新されたドキュメントを検索します.アップロード:trueマークは、setパラメータが該当するドキュメントに検索されていない場合、新規に作成します.
4.削除操作
db.collection(tableName).remove( {'XXXX': xxxx} ,{w: 1}, function(err, docs) {
                            if (err) throw err;
                        });
remove()メソッドを使ってドキュメントを削除します.remove()最初のパラメータは、ドキュメントを削除するための指定条件です.
三.注意
nodeJSは非同期ですから.だから、データベースを操作する時に、前の段階で得られた結果を次の操作に伝える必要があるなら、これらの操作に対して一定の処理を行う必要があります.
db.collection(tableName).update({'XXXX': xxxx}, {$set: {'XXXX': xxxx}}, {w:1,upsert:true}, function(err) {
                    if (err) console.warn(err.message);
                });

db.collection(tableName).remove( {'XXXX': xxxx} ,{w: 1}, function(err, docs) {
                            if (err) throw err;
                        });
このような並列操作は問題があります.前の操作の結果はまだ戻っていないので、nodeJSは次のステップに進みました.
解決策
入れ子文
db.collection(tableName).update({'XXXX': xxxx}, {$set: {'XXXX': xxxx}}, {w:1,upsert:true}, function(err) {
                    if (err) console.warn(err.message);
                                        
                    db.collection(tableName).remove( {'XXXX': xxxx} ,{w: 1}, function(err, docs) {
                                                if (err) throw err;
                                            });
                });
次のステップに必要な操作を前のステップのコールバック関数に置いて、順番に実行することを保証しますが、入れ子が必要な数が非常に大きい場合は、非常に面倒です.