2016-01-22 48 views
0

我想用Node.js连接到MongoDB。 Mongojs工作正常,但Mongojs没有:MongoJS在MongoClient没有返回结果

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

MongoClient.connect(url, function(err, client) { 
    var cursor = client.db("events").collection('events').find(); 
    cursor.each(function(err, event) { 
     console.log("OK MONGODB"); 
    });  
}); 

mongojs(url, ['events']).events.find(function(err, events) { 
    events.forEach(function(event) { 
     console.log("OK MONGOJS"); 
    }); 
}); 

“OK MONGODB”被记录几次; “OK MONGOJS”不是。

有什么不对吗?

回答

1

对您而言,MongoClient中使用的url应与mognojs不同。

假设url'mongodb://localhost/',则MongoClient可以。然而,url used in mongojs应该和dbname添加如下

var db = mongojs('mongodb://localhost/mydb', ['mycollection']); 

所以应该如下

mongojs(url+'events', ['events']).events.find(...); 
+0

感谢这个答案,但我仍然有一个问题。我有3个数据库:管理员,活动和本地。当我选择管理员时,它可以工作,但我没有我想要访问的集合(他们在事件中)。当我选择事件时,我得到“MongoError:身份验证失败。”。你知道我做错了吗? – Arnaud

+0

@Arnaud,[启用客户端访问控制](https://docs.mongodb.org/manual/tutorial/enable-authentication/)mongodb。你应该通过[mongodb:// [username:password @] host1 [:port1]](https://docs.mongodb.org/v2.6/reference/connection-string/)连接mongo,请参考此处的链接。 – zangw

+0

我已经使用连接字符串“mongodb:// root:password @ IP:27017”,并且这适用于管理数据库。这是否意味着我必须为事件数据库定义一个新用户? – Arnaud