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驱动程序。这种组合似乎效果很好。

看看我在下面做什么:

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 回答
0

您使用的用户名/密码可能不匹配。如果您不确定,请在 mongohq 控制台上创建一个新用户并使用这些凭据。

于 2014-04-03T06:05:02.490 回答