4

私はまったく一緒に Web 開発を始めたばかりです。node.js/express/mongo プロジェクトを軌道に乗せようとしています。私は C/C++ のバックグラウンドを持っていますが、モジュール構成のパラダイムは少し奇妙に思えます。

現在、私のserver.jsでは、mongoose を使用して mongoDB オブジェクトを作成、接続、および初期化し、このオブジェクト クエリを渡し、ect を挿入します。私が内部でやるべきことのようには思えませんserver.js

すべての初期化、オプションなどを実行し、この新しいモジュールを介して mongodb インスタンスを返す個別のモジュール (データベースなど) を作成して、プロジェクトから Mongo を疎結合する適切な方法はありますか?

私はこれまでこの規模 (または種類) のプロジェクトに着手したことがなく、すべてを最もよく整理する方法がわかりません..私よりもはるかに経験豊富な人々からのアドバイスをいただければ幸いです.

4

1 に答える 1

2

それを行う多くの方法。ここにいくつかのアイデアがあります。

はい、さまざまなモジュールがさまざまなサービスを呼び出したり、分離したりできるように、何らかのルーティング/ハンドラーをセットアップする必要があります。

以下は、かなり標準的な node.js / Express 構造です。

├── server.js
├── config
│   ├── development
│   ├── production
│   └── staging
├── handlers
│   ├── customers.js
│   └── stores.js
├── node_modules
│   ├── assert
│   ├── ejs
│   ├── express
│   ├── forever
│   ├── mongodb
│   └── mongoskin
├── package.json
├── README.md

次に、server.js で、次のようにハンドラーをインポートできます。

// import route handlers
var customers = require('./handlers/customers'),
    stores = require('./handlers/stores');

次に、ハンドラー内で関数を宣言できます。

exports.addCustomer = function(req, res) {
    // ....
};

server.js でルーティングに使用できるもの:

app.post('/customers/add/:id, metrics.addCustomer);

これで、基本的なフレームワークができました。exports.XXXハンドラー ファイル内の関数の外部でデータベース接続を定義するだけで問題ありません。これらの関数はアクセスできますが、何もアクセスできないserver.jsため、名前空間を汚染することはありません。

var url = config.user +":"
        + config.pass +"@"
        + config.host +"/"
        + config.database;

var mongo = require('mongoskin').db(url);

configここで、JSON ファイルからオブジェクトをロードできます。

それが役立つことを願っています。

于 2013-07-22T16:34:42.160 に答える