【问题标题】:Async: Connecting to MongoDB after the server started异步:服务器启动后连接到 MongoDB
【发布时间】:2017-08-13 08:02:56
【问题描述】:

我很想知道一些关于 Node.js 异步和 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}.`);
});
    }
});

【问题讨论】:

  • 嗯?您没有尝试启动此代码吗?
  • 是的,我做到了——它似乎工作正常,但我不确定。我也不知道为什么它会失败/有效,或者它是否是一个好的做法
  • 在你的代码中,服务器实际上在哪里使用了数据库连接中的任何东西?向我们展示那部分,否则我们无法判断初始化完成之前会发生什么。

标签: javascript ajax node.js mongodb asynchronous


【解决方案1】:

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

当您需要在开始之前等待几件事情时,一些更高级别的框架(例如 Hapi)可能会为您提供一些机制来简化这种情况。例如查看 Hapi 插件:

【讨论】:

  • 我了解,但希望在我们连接时加载内容,然后加载依赖数据库的内容。我想了解它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 1970-01-01
  • 1970-01-01
  • 2015-08-07
  • 2015-01-21
  • 2019-03-02
相关资源
最近更新 更多