【问题标题】:Issue with node.js and mongoskin error handlingnode.js 和 mongoskin 错误处理问题
【发布时间】:2012-04-03 20:25:22
【问题描述】:

我正在学习并尝试使用 node.js 和 mongoskin 的简单示例。下面是我的功能

以下函数的问题是,如果 mongodb 服务器断开连接,那么我也会得到“err=null”,因此无法捕获连接错误。如果我重新启动 node.js 服务器(而 mongoDB 服务器仍然断开连接),我会收到错误消息 “[错误:无法连接到 [server-aa070:27017]]”

// Process messages from client
   app.post('/send', function(req, res){
   var message = {
        id: i++,
      nickname: req.param('nickname', 'Anonymous'),
          text: req.param('text', ''),
created_at: new Date()
};

conn.chat_log.insert(message, function(err) {
   if(err!==null){
   console.log(err);
   }
   else {
    console.log(message);
    console.log(err);
   }
});
res.json({status: 'ok'});
});

【问题讨论】:

  • 你确定 mongo 正在运行吗?

标签: node.js mongodb


【解决方案1】:

我是 node.js 和 mongodb 的新手,但你为什么使用 if(err!==null) 而不是 if(err)?如果我理解正确,这不会解决您的问题吗?

【讨论】:

  • 其实我想我确实误解了你的问题。对不起。您是说当您无法连接到数据库时,您不会收到值为“null”的错误?
  • 我的意思是我需要一些方法来理解 mongoDB 没有连接,只要它在 node.js 中断开连接。所以那个 err 对象应该返回类似“MongoDB is not connected”的错误
【解决方案2】:

不知道mongoskin,但是对于node-mongo-native驱动(构建mongoskin的驱动),作者说:

请注意,没有理由将回调传递给插入或更新 命令,除非您使用 safe:true 选项。如果您不指定 safe:true,那么你的回调将被立即调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 2016-02-26
    • 2010-09-28
    相关资源
    最近更新 更多