无法使用mongoose从mongodb获取数据或将数据插入mongodb

时间:2016-05-29 04:59:13

标签: node.js mongodb azure mongoose

我编写了一个节点Web应用程序,并在我的本地系统上创建了一个mongoDb数据库。我使用以下代码从节点js

连接到本地mongodb
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/db_name'); //local

在我的本地机器上一切正常。所以我继续创建了一个mlab帐户并创建了一个数据库。但是当我尝试通过更改连接字符串来运行代码时,我相信仍然建立了连接。但是查找和保存请求不会调用回调,即使没有错误显示。所有请求都已超时。

var mongoose = require('mongoose');
mongoose.connect("mongodb://user:pass@ds036789.mlab.com:36789/db_name"); //mlab

我注意到的另一件事是我无法ping通ds036789.mlab.com。但是当我尝试使用nc命令时,TCP连接正在成功

nc -w 3 -v ds036789.mlab.com 36789

我甚至尝试过部署到azure。哪个也行不通。任何帮助深表感谢。感谢。

编辑: 无法ping通是因为我使用了azure托管。这是预料之中的。我还发现在尝试连接时出现此错误:

connection error: { [MongoError: auth failed] name: 'MongoError', ok: 0, errmsg: 'auth failed', code: 18 }

证书是正确的。

3 个答案:

答案 0 :(得分:0)

从错误消息来看,您似乎使用了无效的身份验证详细信息

如果您没有为individual database创建用户名和密码,例如db_name,则很有可能发生这种情况。

检查mLabs帐户并为db_name数据库创建用户名和密码,并更新连接字符串。

答案 1 :(得分:0)

根据错误信息,正如@Astro所说,它似乎是由使用为数据库创建的无效身份验证user/password引起的。

您是否为连接数据库而不是mlab的帐户用户创建了新用户?如下图所示。

图1.连接需要数据库用户 enter image description here

图2.数据库的用户列表 enter image description here

希望它有所帮助。

答案 2 :(得分:0)

我发现了问题,这不是凭据的问题。这是猫鼬版本的一个问题。我使用的猫鼬版本并不支持身份验证。我不得不删除包并重新安装最新版本。与

node install mongoose@latest

希望它有所帮助。谢谢你的答案:)