异步:服务器启动后连接到MongoDB

时间:2017-03-21 15:01:12

标签: javascript ajax node.js mongodb asynchronous

我很想知道关于 Node.js async和MongoDB 的一些事情。 如果服务器在我连接之前启动,并且我的模板或Ajax依赖于来自数据库的数据将服务(我预编译我的把手)HTML文件失败或我的模板/ Ajax将等待连接然后继续?

如果它有效,我很想更好地理解它是如何工作的! 如果它失败了,我怎么能优雅地“修理”它呢?

这是一个解决方案的例子,使用提升(对我来说似乎很糟糕):

//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}.`);
});
    }
});

1 个答案:

答案 0 :(得分:1)

是的,这是一种正确的方法。如果要在服务器开始提供请求之前确保数据库可用,则需要在数据库连接方法的回调中启动服务器。

一些更高级别的框架(如Hapi)可能会为您提供一些机制来简化案例,以便在开始之前需要等待几件事情。例如,请参阅Hapi插件: