2016-08-30 7 views
0

マイフォルダ構造は以下の通りです:ファイルapp.jsマングースとルータファイル

bin/ 
    www 
models/ 
    myMongooseModel.js 
public/ 
    ... 
routes/ 
    index.js 
    anotherroute.js 
views/ 
    ... 
app.js 
package.json 

、私はいくつかの設定(app.setapp.useコマンド)を持っています。 routes/ディレクトリには、ルート用のファイルと各ファイル用のファイルがあります。これらのファイルでは、ユーザーからの要求を処理します。ファイルbin/www.jsがサーバーをセットアップします。

質問は次のとおりです:どのように私はそれを初期化する必要があり、私はルータファイルに含める必要がありますこの設定では、Mongooseを統合するのですか?

これが最善の方法ですか?

db.js

var db = mongoose.connection; 
db.on('error', console.error.bind(console, 'connection error:')); 
db.once('open', function() { 
    console.log('connected'); 
}); 

index.js:私は、DB接続が設定される前に、要求が行われていることを避けるためにはどうすればよい

var mongoose = require('mongoose'); 
var MyModel = mongoose.model('myMongooseModel'); 
// do something with MyModel 

答えて

0

これは、いくつかの約束を追加する絶好の機会です!おそらく、あなたのapp.jsのどこかで、あなたはアプリケーションを初期化し、ポートを与えて、トラフィックの受け入れを開始するように指示します。そのステップの前に、ネーブルを使用して確立された接続が開始するのを待つことができます。理想的には、このロジックは独自の 'createConnection.js'にモジュール化されています。

// app.js 
const app = require('express'); 
const mongoose = require('mongoose'); 
const connectPromise = mongoose.connect('myuri'); 
connectPromise.then(() => app.listen(3000)) 

http://mongoosejs.com/docs/api.html#index_Mongoose-connectを見てみてください:

それは次のようになります。

+0

「()=> app.listen(3000)」という構文は何を意味していますか?それは普通のJSやNodeJSで動作しますか、それとも特別なものですか? – Green

+0

これは[ES6仕様](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)の一部です。これは、ノード4.x以降で一般的に利用可能です。 – broguinn