我正在使用Node启动webapps开发,所以我对这项技术很陌生。
我已经做了几个例子,并设法让它运行。
然而,现在我正在尝试使用Mongodb,但我无法使其正常运行。似乎连接正在工作但是当我调用find()方法并且我转到localhost:3000 / near(这是生成findAll文档的url)时,浏览器花费大约半分钟加载并完成返回任何内容(的 ERR_EMPTY_RESPONSE )。
这是我的代码:
app.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本身会为我做到这一点!
答案 0 :(得分: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...");
}
});