1. ナンセンス
2013 年 1 月以来、私は開発のために mongodb を使用し、旅行タグ サービス、Weibo タグ検索システム、地図サービス、および Web APP サービスを開発してきました。MongoDB を使用するシナリオは .NET および JAVA 環境から転送されました。 node.js プラットフォームに。 Node.jsとmongodbの組み合わせはとても良いと思うほどです。 mongodbとnode.jsは自然にマッチするような気がします。実際、mongodb のクライアントは JS の解析エンジンです。したがって、製品のプロトタイプに mongodb と node.js を選択することも非常に良い選択です。インターネット上で、どのドライバーが mongodb 開発に最適であるかを尋ねるネチズンに会いました。これまでは常にネイティブ ドライバーを使用していましたが、接続の終了操作など、コードを作成するときに注意すべきことがたくさんあります。 .. したがって、node.js の開発環境では、mongoskin を使用することをお勧めします。
2. 議論する必要のあるいくつかの概念
(1) データベース: リレーショナル データベースと同じ。
(2) セット: リレーショナル データベース内のテーブル。
(3) ドキュメント: リレーショナル データベースのレコードに似ており、実際には JSON オブジェクトです。
(4) データベース設計: NoSQL 設計を検討し、リレーショナル データの設計概念を放棄することをお勧めします。実際、NoSQL データベース設計は幅広く奥が深いため、プロジェクトで継続的に実践する必要があります。
(5) ユーザー システム: 各データベースには独自の管理者がおり、次のことができます。
3. mongodb 開発インフラストラクチャを構築する
(0) npm install mongoskin mongoskin をインストールします
Node.js のインストール、パッケージ、その他のメカニズムはここでは紹介されていません。
(1) 設定ファイルconfig.jsonを作成する
(2) util関連クラスmongo.jsの作成:DBオブジェクトのエクスポート
/*
* @des: データベース接続モジュールのエクスポート
* */
module.exports = (function(){
var host = config.host,
ポート = config.port,
dbName = config.dbname,
ユーザー名 = config.ユーザー名,
パスワード = config.password,
str = 'mongodb://' ユーザー名 ':' パスワード '@' ホスト ':' ポート '/' dbName;
var オプション = {
native_parser: true
};
return mongoskin.db(str, option);
})();
(3) CRUD の基本クラスを構築する: CURD コードの繰り返しを減らすために、関連する JSON オブジェクトを渡すだけで済みます
var CRUD = 関数(コレクション){
This.collection = コレクション;
db.bind(this.collection);
};
CRUD.prototype = {
/*
* @des: レコードを作成します
* @model: 挿入されたレコード、JSON 形式のモデル
* @callback: コールバック、正常に挿入されたレコードまたは失敗情報を返します
*
* */
作成: function(model, callback){
db[this.collection].save(model, function(err, item){
if(err) {
return callback(status.fail);
}
アイテム.ステータス = ステータス.成功.ステータス;
item.message = status.success.message;
return callback(item);
});
}、
/*
* @des: レコードを読み取ります
* @query: クエリ条件、Mongo クエリの JSON リテラル
* @callback: コールバック、要件を満たすレコードまたは障害情報を返します
*
* */
読み取り: function(クエリ、コールバック){
db[this.collection].find(query).toArray(function(err, items){
if(err){
return callback(status.fail);
}
var obj = {
ステータス: status.success.status,
メッセージ: status.success.message,
アイテム: アイテム
};
return callback(obj);
});
}、
/*
* @des: レコードを更新します
* @query: クエリ条件、Mongo クエリの JSON リテラル、ここでは _id
* @updateModel: 更新が必要な JSON 形式のモデル
* @callback: 成功または失敗の情報を返します
*
* */
更新: function(query, updateModel, callback){
var set = {set: updateModel};
db[this.collection].update(query, set, function(err){
if(err){
return callback(status.fail);
}その他{
return callback(status.success);
}
});
}、
/*
* @des: レコードを削除します
* @query: クエリ条件、Mongo クエリの JSON リテラル
* @callback: 失敗または成功の情報を返します
*
* */
deleteData: function(クエリ、コールバック){
db[this.collection].remove(query, function(err){
if(err){
return callback(status.fail);
}
return callback(status.success);
});
}
};
module.exports = CRUD;
(4) 成功と失敗を示すためにステータスが必要であるため、status.json をビルドします。これは、検証コード エラー、SMS 検証エラー、ユーザー名エラーなどを含めるように拡張できます。
/*
* 失敗ステータス
*
* */
失敗: {
ステータス: 0、
メッセージ: 「失敗」
}、
/*
* パスワードを 2 回入力すると不一致です
* */
繰り返しパスワード: {
ステータス: 0、
メッセージ: 「2 回入力したパスワードは一致しません」
}
};