私は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()などのコマンドを実行すると、コレクション内のすべてが取得されるため、アクセス許可の問題になることはありません。
何かアドバイス/提案はありますか?