0

我正在使用 Node 开始 webapps 开发,所以我对这项技术很陌生。

我已经做了几个例子并设法让它运行。

但是,现在我正在尝试使用 Mongodb,但无法使其正常运行。似乎连接正在工作,但是当我调用 find() 方法并转到 localhost:3000/near (这是创建 findAll 文档的 url)时,浏览器花费了大约半分钟的时间加载并完成返回任何内容( ERR_EMPTY_RESPONSE )。

这是我的代码:

应用程序.js

app.get('/near', function(req, res){
    server.findAll( function(error,docs){
        res.render('near', { 
                title: 'Cerca tuyo!',
                places:docs
        });
    })
});

这是我的 Server.js

//constructor
AppServer = function(host, port) {
  this.db= new Db('node-mongo-places', new Server(host, port, {safe: false}, {auto_reconnect: true}, {}));
  this.db.open(function(){});
};

//Devuelve la colección de "places"
AppServer.prototype.getCollection= function(callback) {
  this.db.collection('places', function(error, places_collection) {
    if( error ) callback(error);
    else callback(null, places_collection);
  });
};


//Devuelve todos los contenidos de la DB places
AppServer.prototype.findAll = function(callback) {
    this.getCollection(function(error, places_collection) {
      if( error ) callback(error)
      else {
        places_collection.find().toArray(function(error, results) {
          if( error ) callback(error)
          else callback(null, results)
        });
      }
    });
};

我已经调试了编写 console.log() 的代码,它似乎没有到达回调函数places_collection.find().toArray(function(error, results) {

知道为什么服务器不返回任何东西吗?


!!!编辑:

我找到了一些代码来测试与 mongodb 的连接是否正常,它说它不是:[Error: failed to connect to [localhost:27017]]

所以问题出在连接上。我应该先运行 mongodb 吗?我认为 app.js 本身会为我做到这一点!

4

1 回答 1

1

得到了这个问题的答案:

如前所述,我认为这npm install mongodb将安装整个东西。但是,它没有,所以我设法通过执行来修复它sudo apt-get install mongodb

安装后,应用程序本身运行 mongodb。

我将此添加到我的 mongodb open() 方法中,以便我可以看到发生了什么:

this.db.open(function(error,db){
    if(error) {
        console.log(error);
    } else {
        console.log("connected to mongod with no problems...");
    }
  });
于 2013-05-15T18:47:37.633 回答