node.js - 使用 MongoDB 对 Windows Azure 上的 node.js 应用程序的首次请求产生 400 Bad Request

标签 node.js mongodb azure mongoose

我正在使用 Windows Azure 部署一个我编写的 Node.js 应用程序,该应用程序向客户端公开一个相当简单的 REST CRUD api。它托管在 Windows Azure 网站中,并通过 Windows Azure 商店与 mongoose 一起使用 MongoDB。我向服务发出的请求是 JSON,响应也是 JSON(不确定这是否重要,但其他人已经讨论过对内容类型为 application/json 的请求有 400 个响应)

在很长一段时间第一次访问时,应用程序毫无失败地返回 400 Bad Request。只要我经常点击应用程序(至少每分钟一次左右)来保持应用程序“温暖” - 我似乎再也不会遇到这种情况了。

托管扩展设置并不重要 - 我在免费层上得到的结果与在保留模式下得到的结果相同。

还有人看过这个吗?

最佳答案

为了保证对 Node.js 中任何连接的访问​​,您必须将所有需要连接的代码放在回调中。 Mongoose 公开此连接的方式是通过事件。当 mongoose 连接调用事件“open”时,您就可以访问数据库连接。

即:

mongoose.connect('details');

mongoose.on('open', function () {
  var connection = mongoose.connection;

  // Do things with your connection here
  doThings(connection);
});

function doThings(connection) {
  app.get(...);
}

关于node.js - 使用 MongoDB 对 Windows Azure 上的 node.js 应用程序的首次请求产生 400 Bad Request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15512017/

相关文章:

node.js - AngularJS:使用 ng-repeat 处理来自套接字的数据的最佳方法

mongodb - 如何对 MongoDB 集合中的对象进行分组

javascript - 我想使用 mongodb 的 _id 检索在特定日期插入的值

asp.net-mvc - 使用 ASP.NET MVC 的 Jenkins 主/从

powershell - 在 Azure VMRole 上公开端口

Azure Boards,如何使用每个工作项类型?

node.js - socket.io 客户端未接收

node.js - ExpressJS GET 重定向

javascript - 使用 twilio Passthrough API 向多个号码发送消息

php - MongoDB 记录太多?