1。ナンセンス
2013年1月にMongoDBと接触して以来、Travel Tag Services、Weiboタグ検索システム、MAPサービス、およびWebアプリサービスを開発しました... 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)ユーザーシステム:各データベースには独自の管理者があります。
コードコピーは次のとおりです。
dbnameを使用します。 db.Adduser( 'root_1'、 'test');
(7)外部ポートを変更することをお勧めします
(8)サービスを開始します(これはWinとLinuxの下で少し変更されています):
コードコピーは次のとおりです。
mongod - dbpath "xx/mongodb/data/db" - logpath "xx/mongodb/log/mongo.log" - logappend -auth -port 7868
3. MongoDB開発インフラストラクチャを構築します
(0)NPMインストールMongoskinインストールMongoskin
node.jsのインストール、パッケージ、その他のメカニズムはここには紹介されていません。
(1)構成ファイルconfig.jsonを作成します
コードコピーは次のとおりです。
{
「dbname」:「テスト」、
「ポート」:「7868」、
「ホスト」:「127.0.0.1」、
「ユーザー名」:「テスト」、
「パスワード」:「テスト」
}
(2)UTIL関連のクラスMongo.jsを作成:DBオブジェクトをエクスポートします
コードコピーは次のとおりです。
var mongoskin = require( 'mongoskin')、
config = require( './../ config.json');
/*
* @DES:データベース接続モジュールをエクスポートします
* */
module.exports =(function(){
var host = config.host、
port = config.port、
dbname = config.dbname、
username = config.username、
パスワード= config.password、
str = 'mongodb://' + username + ':' + password + '@' + host + ':' + port + '/' + dbname;
var option = {
Native_Parser:True
};
mongoskin.db(str、option)を返します。
})();
(3)CRUDの基本クラスを構築する:重複したカードコードを削減するには、関連するJSONオブジェクトに渡すだけです。
コードコピーは次のとおりです。
var db = require( './ mongo.js')、
ステータス= require( './ status')、
mongoskin = require( 'mongoskin');
var crud = function(collection){
this.collection = collection;
db.bind(this.collection);
};
crud.prototype = {
/*
* @des:レコードを作成します
* @model:挿入されたレコード、JSON形式のモデル
* @callback:コールバック、成功した挿入または故障情報の記録を返します
*
* */
create:function(model、callback){
db [this.collection] .save(model、function(err、item){
if(err){
return callback(status.fail);
}
item.status = status.success.status;
item.message = status.success.message;
return callback(item);
});
}、
/*
* @des:レコードを読んでください
* @Query:クエリ条件、JSONリテラルオブマンゴクエリ
* @callback:コールバック、要件または失敗情報を満たすレコードを返す
*
* */
読む:function(query、callback){
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:クエリ条件、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:クエリ条件、JSONリテラルオブマンゴクエリ
* @callback:失敗または成功のメッセージを返します
*
* */
deletedata:function(query、callback){
db [this.collection] .remove(query、function(err){
if(err){
return callback(status.fail);
}
return callback(status.success);
});
}
};
module.exports = crud;
(4)Status.JSONを構築します。一部のステータスは成功と失敗を示すために必要であるため、後の段階では、検証コードエラー、SMS検証エラー、ユーザー名エラーなどに拡張できます。
コードコピーは次のとおりです。
module.exports = {
/*
*成功ステータス
*
* */
成功: {
ステータス:1、
メッセージ:「OK」
}、
/*
*ステータスの失敗
*
* */
失敗: {
ステータス:0、
メッセージ:「失敗」
}、
/*
* 2回入力されたパスワードは一貫性がありません
* */
パスワードを再度入力してください: {
ステータス:0、
メッセージ:「2回入力されたパスワードは一貫性がありません」
}
};