2017-03-21 29 views
1

我想知道關於Node.js async和MongoDB的一些事情。 如果服務器在我連接之前啓動,並且我的模板或Ajax依賴於來自數據庫的數據將提供服務(我預編譯我的句柄)HTML文件失敗或將我的模板/ Ajax等待連接,然後繼續?異步:在服務器啓動後連接到MongoDB

如果它有效,我會更好地理解它的工作原理! 如果失敗了,我該如何「優雅地修復」它?

這是一個解決方案的一個例子,使用起重(似乎對我不好TBH):

//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

是的,這是做它的正確道路。如果要在服務器開始提供服務請求之前確保數據庫可用,則需要在數據庫連接方法的回調中啓動服務器。

像Hapi這樣的更高級別的框架可能會爲您提供一些機制來簡化案例,當您需要在開始之前等待幾件事情時。例如看到哈皮插件:

+0

我明白了,但是想要在我們連接時加載,然後再加載依賴於數據庫的東西。我想了解它 – Defaceo