Bitnami Meanstack Mongoose Connection

时间:2016-11-05 20:49:20

标签: node.js mongodb amazon-ec2 mongoose bitnami

我在Ubuntu 16.04中创建了一个简单的服务,使用mongo db node和express将数据返回到一个有角度的2应用程序。

我有一个名为server.js的文件,它连接到一个本地mongodb实例,其中包含一个名为game的数据库和一个名为players的集合。它在我的本地机器上安装得很好。但是我试图用亚马逊ec2上的Bitnami平均堆栈图像进行部署。 (嘴巴满口)。我根据this guide正确设置了端口,我可以远程连接它。但是,我无法获得连接到任何数据库的mongoose。这是我的代码,可以在我的本地机器上运行。

mongoose.connect('mongodb://localhost:27017/game');

router.route('/player')



.get(function(req, res) {
    console.log(mongoose.connection.readyState);
    Player.find({"player":user,"password":password},function(err, Test) {
        if (err)
            res.send(err);

        res.json(Test);
    });
});

这是我调整后的平均堆栈图像代码

mongoose.connect('mongodb://root:"My-Root-Password@127.0.0.1:27017/game');
 router.route('/player')
.get(function(req, res) {

console.log(mongoose.connection.readyState);
    Player.find({"player":user,"password":password},function(err, Test) {
        if (err)
            res.send(err);

        res.json(Test);
    });
});

在我的本地机器上,我在console.log上获得值1,在平均堆栈图像上获得零值。我不确定如何使用mongoose连接到bitnami的mongo实例。我检查过游戏存在并且有我想要的数据。

2 个答案:

答案 0 :(得分:0)

我找到了修复但是我还没有完全理解它。它来自我发布的指南here。首先,我必须取消注释mongodb.conf中标有noauth = true的部分,然后注释掉auth = true的行。然后我重新启动mongo,并创建一个具有读取和写入我想要使用的数据库的权限的新用户

db.createUser({
    user: "NEW USERNAME",
    pwd: "NEW PASSWORD",
    roles:[
            {
                    "role" : "readWrite",
                    "db": "game"
            }
    ]})

创建用户后,我撤消了对noauth = trueauth = true所做的操作,然后重新启动mongodb。然后我可以像这样连接猫鼬

mongoose.connect('mongodb://NEW USERNAME:NEW PASSWORD@127.0.0.1:27017/game');

答案 1 :(得分:0)

使用MongoDB 3.0,他们为MongoDB添加了一种新的身份验证机制(更多详细信息请参见下面的链接)。

身份验证信息:https://docs.mongodb.com/manual/core/authentication/

如何使用新的身份验证机制:https://www.mongodb.com/blog/post/improved-password-based-authentication-mongodb-30-scram-explained-part-2

因此,本指南提供了解决方法以获取与数据库的连接。现在,您已经使用" readWrite"创建了该用户。数据库上的权限,以便您可以使用它。