mongoclient.connection不返回光标回到命令行(mongoclient.conne

2019-10-18 14:50发布

这是我的test1.js

console.log("foo");

当我运行test1.js,我在命令行回来

$ node test2.js
foo
$

这是我的test2.js,使用MongoDbClient

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect("mongodb://local.host/test?w=1", function(err, db) {
   console.log("foo");
});

然而,当我运行test2.js,我必须按CTRL-C得到命令行后面

$ node test3.js
foo
^C
$

有什么不同? 和我应该怎么做才能在命令行后面(密切联系,也许)?

Answer 1:

Node.js的不会关闭应用程序,同时有一些事件订阅和潜在的逻辑可能发生。

当你创建MongoClient它创建EventEmitter以及和它不会让Node.js的进程退出,因为它可能可以接收一些事件。

如果你想获得光标回来 - 那么你有几种选择:

  1. 奈斯利杀死所有EventEmitters和空转定时器和间隔时间和过程将退出。 但是这是很难实现的。
  2. 只要致电: process.exit(0)这将很好地关闭进程。

以及检查refunref定时器功能(间隔,超时): http://nodejs.org/api/timers.html#timers_unref

如果有MongoClient,当你用它做只是关闭数据库连接:

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/testdb', function(err, db) {
  // do your stuff

  // when you are done with database, make sure to respect async queries:
  db.close();
});


文章来源: mongoclient.connection does not return cursor back on command line