我有(注意:用户名和密码是组成的):
const CONNECTION_URL = "mongodb+srv://smith_bob:smith_bob@hotmail.com:T@llyHo!:@cluster0.r92qc.mongodb.net/myFirstDatabase?retryWrites=true&w=majority";
const PORT = process.env.PORT || 5000;
mongoose.connect(CONNECTION_URL,{useNewUrlParser: true, useUnifiedTopology: true})
.then(()=>app.listen(PORT,()=> console.log(`Server running on port: ${PORT}`)))
.catch((error)=> console.log(error.message));
但是当我运行 nodemon index.js
时得到以下信息:
mondodb+srv URI 不能有端口号
[nodemon] clean exit - 重启前等待更改
有什么想法吗?
我尝试使用百分比编码字符,但出现如下错误:
. . . smith_bob:smith_bob@hotmail.com:%40@llyHo!: . . .
mongodb+srv URI 不能有端口号
. . . smith_bob%3Asmith_bob%40hotmail.com%3AT%40llyHo!%3A . . .
身份验证错误:身份验证失败
. . . smith_bob:smith_bob%40hotmail.com%3AT%40llyHo!: . . .
密码包含非转义字符
. . . smith_bob:smith_bob@hotmail.com%3AT%40llyHo!: . . .
mongodb+srv URI 不能有端口号
似乎是因为在主机
@
之前存在多个:
和cluster0.r92qc.mongodb.net
而没有百分比编码。尝试以以下格式提供它:如果用户名或密码包含任何一个
: / ? # [ ] @
字符,则必须使用 percent encoding 进行转换。以你的连接字符串为例,如果用户名是smith_bob:smith_bob@hotmail.com
,密码是T@llyHo!:
,它应该分别转换为smith_bob%3Asmith_bob%40hotmail.com
和T%40llyHo!%3A
,连接字符串会变成:要了解有关连接字符串格式的更多信息,请参阅 here 。