我在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实例。我检查过游戏存在并且有我想要的数据。
答案 0 :(得分:0)
我找到了修复但是我还没有完全理解它。它来自我发布的指南here。首先,我必须取消注释mongodb.conf中标有noauth = true
的部分,然后注释掉auth = true
的行。然后我重新启动mongo,并创建一个具有读取和写入我想要使用的数据库的权限的新用户
db.createUser({
user: "NEW USERNAME",
pwd: "NEW PASSWORD",
roles:[
{
"role" : "readWrite",
"db": "game"
}
]})
创建用户后,我撤消了对noauth = true
和auth = 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"创建了该用户。数据库上的权限,以便您可以使用它。