2017-03-21 8 views
1

Node.js asyncとMongoDBについていくつか知りたいです。 接続前にサーバーが起動し、テンプレートまたはAjaxがデータベースのデータに依存する(ハンドルバーをプリコンパイルする)場合、HTMLファイルが失敗するか、テンプレート/ Ajaxが接続を待機してから続行しますか?非同期:サーバーの起動後にMongoDBに接続する

もしうまくいくなら、私はそれがいかに正確に機能したかを理解したいと思っています! それがうまくいかない場合、どうすればそれをエレガントに "修正"できますか?はい、これはそれを行うための正しい方法である

//connect to db 
mongodb.connect("someDBplace", 
    (err, db)=>{ 
    if(err){ 
     return generalLogger.error(`The database has failed to connect: ${err}.`); 
    }else{ //start the server now: 
     generalLogger.info(`Connected to database: ${stringify(db.databaseName)}.`); 

server.listen(`${port}`, (err)=>{ 
    if(err){ 
     generalLogger.error(err); 
    } 
    //for demo: console th eMIMEtype 
    generalLogger.info(`The Server started on port: ${port}.`); 
}); 
    } 
}); 
+0

えっ:たとえばハピプラグインを参照してください?このコードを起動しようとしませんでしたか? –

+0

ええ、私はやった - それはうまく動作するのは見えますが、わかりません。私はまた、それが失敗したか働いたか、またはその良い練習であるかどうかを知りません – Defaceo

+0

あなたのコードでは、サーバは実際にデータベース接続から何かを使用しますか?その部分を私たちに教えてください。あるいは、初期化が完了する前に何が起こっているのかを知ることはできません。 – Bergi

答えて

1

これは、巻き上げを(TBH、私に悪いようです)を使用して、解決策の一例です。サーバーが要求の処理を開始する前にデータベースが使用可能になっていることを確認するには、データベース接続メソッドのコールバックでサーバーを開始する必要があります。

Hapiのような上位レベルのフレームワークでは、起動する前にいくつかのことを待つ必要がある場合に、単純化するためのメカニズムがいくつか用意されています。

+0

私は理解しますが、私たちが接続されている間に物事が読み込まれ、そしてDBに依存するものが読み込まれるようにしたいと思います。私はそれを理解したい – Defaceo

関連する問題