ホームページ > ウェブフロントエンド > jsチュートリアル > mongoskin を使用して Node.js_node.js で mongoDB インスタンスを操作する

mongoskin を使用して Node.js_node.js で mongoDB インスタンスを操作する

WBOY
リリース: 2016-05-16 16:35:10
オリジナル
1654 人が閲覧しました

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) ユーザー システム: 各データベースには独自の管理者がおり、次のことができます。

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

dbname を使用します; db.addUser('root_1' , 'test');

(7) 外部ポートを変更することをお勧めします
(8) サービスを開始します (これは Win 環境で、Linux 環境ではわずかに変更されています):
コードをコピー コードは次のとおりです:

mongod --dbpath "XXMongoDBdatadb" --logpath "XXMongoDBlogmongo.log" --logappend -auth --port 7868

3. mongodb 開発インフラストラクチャを構築する

(0) npm install mongoskin mongoskin をインストールします

Node.js のインストール、パッケージ、その他のメカニズムはここでは紹介されていません。

(1) 設定ファイルconfig.jsonを作成する

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

{
"データベース名":"テスト",
"ポート": "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,
ポート = 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 db = require('./mongo.js'),
ステータス = require('./status'),
モンゴスキン = require('モンゴスキン');


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 検証エラー、ユーザー名エラーなどを含めるように拡張できます。

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

module.exports = {
/*
*成功ステータス
*
* */
成功: {
ステータス: 1、
メッセージ: 「OK」
}、

/*
* 失敗ステータス
*
* */
失敗: {
ステータス: 0、
メッセージ: 「失敗」
}、

/*
* パスワードを 2 回入力すると不一致です
* */
繰り返しパスワード: {
ステータス: 0、
メッセージ: 「2 回入力したパスワードは一致しません」
}
};

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