我是一个大的 Node.js 和 Mongo 新手,所以请温柔一点。
这是我的 Node.js 应用程序:
var mongo = require('mongodb');
var Server = mongo.Server;
var Db = mongo.Db;
var server = new Server('hostname.mongolab.com', 666, {auto_reconnect : true}, {w:0, native_parser: false});
var db = new Db('dbName', server, {safe:true});
db.open(function(err, client) {
if(err) { return console.dir(err); }
client.authenticate('mongolabUser', 'mongolabUserPassword', function(authErr, success) {
if(authErr) { return console.dir(authErr); }
var stream = client.collection('myCollection').find({}).stream();
stream.on('data', function(item) {console.log("Do something with item"); });
stream.on('end', function() {console.log("Empty!");});
});
db.close();
});
通过大量使用调试器语句,我得出的结论是 client.authenticate 似乎没有运行。看起来它即将执行该行,但随后跳过它并直接进入 db.close()。
但这只是我的第一个问题。在之前的某个时间,我能够连接到数据库并进行身份验证,但我的用户在 find({}) 命令中没有检索到任何内容。我尝试了各种方法,流是我决定暂时放弃之前的最新尝试。
Mongolab好像是在v2.0.7上,我的mongo安装的是v2.2.1。当我使用命令行工具以 mongolabUser 身份登录并执行 db.myCollection.find() 之类的命令时,我会在我的集合中获取所有内容,因此这不会是权限问题。
有什么建议/建议吗?