2

node.js アプリから mongoHQ に接続しようとしています。私が使用しているコードは次のとおりです。

 var databaseUrl = "mongodb://fishcuss:MyPassword@alex.mongohq.com:10015/app9759558"
 var collections = ["users"]
 var db = require("mongojs").connect(databaseUrl, collections);


 exports.register = function(req, res){
   console.log("Register hit")
   var user = req.body;
   db.users.findOne({username:user.username}, function(err, users) {
     console.log(err)
     console.log(users);
     if( err || users) {
         res.statusCode = 500;
         res.end();
     }
     else {
         console.log("Inserting new user")
         user._id = uuid.v4();
         user.lists = [];
         db.users.insert(user,{},function(){
             req.session.user=user
             res.write(JSON.stringify(user), 'UTF-8');
             res.statusCode = 200;
             res.end();
         })
     } ;
 });
};

ただし、このエラーが発生するようです

{ [MongoError: auth fails] name: 'MongoError', errmsg: 'auth fails', ok: 0 }

これにより、自分の接続に何かが欠けていると信じるようになります。誰でもそれが何であるかについてのヒントを持っていますか?

ありがとう

4

2 に答える 2

0

コードが機能しない理由はわかりませんが、接続を開いた後に認証する必要があると思います。

Heroku + MongoLAB も使用しており、mongo-db-nativeドライバーを使用しています。その組み合わせはかなりうまくいくようです。

Check out what I do below:

var mongodb = require('mongodb');
mongo_client = new mongodb.Db(mongo_db_name, new mongodb.Server(mongo_url, mongo_port), {safe:true});

mongo_client.open(function(err, p_client) {

    if (err)
        console.warn("MONGO ERROR:" + err.message);

    p_client.authenticate(mongo_db_username,mongo_db_password,{},function(err,success){
        if (err) {
            console.warn("MONGO ERROR: unauthorized "+ err.message);

        } else {
            console.log("MONGO Authorized");
            mongo_messages_collection = new mongodb.Collection(p_client, 'messages');
        }
    });
});
于 2013-02-07T00:27:31.787 に答える