1

所以我第一次尝试使用mongodbtest.js从教程中复制并过去):

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

// Connect to the db
MongoClient.connect("mongodb://localhost:27017/local", function(err, db) {
  if(!err) {
    console.log("We are connected");
  }
});

当我启动时node test.js,终端没有显示任何错误,但我没有结束。登录“我们已连接”后它卡住了,等待我不知道的东西。这是正常的吗?谢谢。

另一方面,我使用mongo可执行文件没有问题:

mongo
show dbs

休息界面有效,http://localhost:28017/listDatabases?text=1显示:

{ "databases" : [ 
    { "name" : "local",
      "sizeOnDisk" : 1,
      "empty" : true } ],
  "totalSize" : 0 }
4

2 回答 2

0

正如 Roman 所指出的,您需要在完成后关闭与 MongoDB 的连接,否则它将使程序保持打开状态。

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

// Connect to the db
MongoClient.connect("mongodb://localhost:27017/local", function(err, db) {
  if(!err) {
    console.log("We are connected");
  }

  // Use db
  ...

  // Done with db so close it.
  db.close();
});
于 2013-02-17T14:38:32.130 回答
0

MongoClient 打开到 mongodb 的 tcp 连接。每当您这样做时,它都会阻止节点事件循环终止您的应用程序,因为它正在等待 tcp 套接字上的数据。

在您的示例中,您已经连接,所以现在您可以开始在回调中对数据库进行查询。

于 2013-02-17T14:09:21.437 回答