我正在将Node.js与MongoDB用作数据库并使用Mongoose。休息几天后,我就开始工作了。现在,每当我尝试运行Server.js(服务器文件)时,都会给我一个错误:
无法连接数据库错误:queryTxt ETIMEOUT cluster0-69fzw.mongodb.net
我没有遇到任何互联网连接问题,但是无法连接数据库。
这是我的Keys.js代码,其中提供了连接字符串
module.exports = {
mongoURI:
"mongodb+srv://yasir:<password>@cluster0-fxwlb.mongodb.net/test?
retryWrites=true&w=majority"
//copied connection string,
};
While my Server.js file is
const database = require("./keys/keys").mongoURI;
const port = process.env.port || 3000;
mongoose
.connect(database, { useNewUrlParser: true, useUnifiedTopology: true })
.then((data) => {
console.log("Database Connected ");
})
.catch((err) => {
console.log("Couldn't Connect Database " + err);
});
答案 0 :(得分:0)
首先,如果将连接字符串更改为mongodb://
,则将其恢复为mongodb+srv://
我成功使用以下命令连接到mongodb实例:
mongodb + srv:// [用户]:[密码] @ cluster0-xxxx.mongodb.net / test?retryWrites = true&w = majority
请注意,方括号将我的帐户中的用户和密码凭据括起来,并用冒号分隔。
在方括号内,我应该将当前的用户名和密码凭据变成有效的连接字符串。
最终的字符串如下所示:
mongodb+srv://myuser:abc123@cluster0-xxxx.mongodb.net/test?retryWrites=true&w=majority
您应该替换连接字符串中可能包含的元字符。元字符的格式为
我在nodejs代码中的最终连接字符串:
const url = 'mongodb+srv://myuser:abc123@cluster0-xxxx.mongodb.net/test?retryWrites=true&w=majority'
如果这没有帮助,我建议您从数据库提供者访问Troubleshoot Connection Issues。