我编写了一个节点Web应用程序,并在我的本地系统上创建了一个mongoDb数据库。我使用以下代码从节点js
连接到本地mongodbvar 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 }
证书是正确的。
答案 0 :(得分:0)
从错误消息来看,您似乎使用了无效的身份验证详细信息
如果您没有为individual database
创建用户名和密码,例如db_name
,则很有可能发生这种情况。
检查mLabs帐户并为db_name
数据库创建用户名和密码,并更新连接字符串。
答案 1 :(得分:0)
根据错误信息,正如@Astro所说,它似乎是由使用为数据库创建的无效身份验证user/password
引起的。
您是否为连接数据库而不是mlab的帐户用户创建了新用户?如下图所示。
希望它有所帮助。
答案 2 :(得分:0)
我发现了问题,这不是凭据的问题。这是猫鼬版本的一个问题。我使用的猫鼬版本并不支持身份验证。我不得不删除包并重新安装最新版本。与
node install mongoose@latest
希望它有所帮助。谢谢你的答案:)