当前位置 : 主页 > 网页制作 > Nodejs >

为什么我的Node.js脚本中的MongoClient不能完成?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我有一个一次性的Node脚本,可以对MongoLab上的MongoDB数据库进行一些更改.但是,一旦它完成,它永远不会退出事件循环(我总是要ctrl C它),无论db.close()和db.logout()调用我做多少. 奇怪的是,如果
我有一个一次性的Node脚本,可以对MongoLab上的MongoDB数据库进行一些更改.但是,一旦它完成,它永远不会退出事件循环(我总是要ctrl C它),无论db.close()和db.logout()调用我做多少.

奇怪的是,如果我启动一个本地运行的mongod实例并连接到它,那么脚本就可以了,但远程连接永远不会结束.

这是我的脚本的简短版本仍然存在问题(在命令行上将URL带到服务器).这是怎么回事?

var mongodb = require("mongodb");

function onSuccess(cb){
  return function(err) {
    if (err) {
      console.error(err)
    } else {
      cb.apply(this,Array.prototype.slice.call(arguments,1))
    }
  }
}

console.log("Connecting to "+process.argv[2]+' ...');
mongodb.MongoClient.connect(process.argv[2],onSuccess(function(db){
  console.log("Connected.");
  db.logout(onSuccess(function(logoutResult){
    db.close(onSuccess(function(closeResult){
      console.log("All finished. Can has prompt return nao?")
    }));
  }));
}));
刚尝试使用驱动程序版本1.2.7 / 1.2.8和最新的1.2.9对mongolab的代码,它正常工作.因此,它更可能是驱动程序/操作系统/节点版本的奇怪组合.我建议将您的节点和驱动程序升级到最新版本,然后重试.
网友评论