Mongoose 连接 MongoDB 出现 "URI malformed" 错误的解决方法

阅读时长 4 分钟读完

在使用 Mongoose 连接 MongoDB 数据库时,有时会出现 "URI malformed" 错误,这种错误通常是由于连接字符串格式不正确导致的。下面介绍一些常见的出现这种错误的原因及解决方法。

1. 连接字符串格式错误

在连接 MongoDB 数据库时,必须使用正确的连接字符串格式。连接字符串包含了 MongoDB 数据库的地址、端口号、数据库名称和认证信息等。如果连接字符串格式不正确,就会出现 "URI malformed" 错误。

下面是一个正确的连接字符串的例子:

其中,mongodb:// 是协议名称,localhost 是 MongoDB 数据库的地址,27017 是 MongoDB 数据库的端口号,mydatabase 是数据库名称。在这个例子中,我们没有提供认证信息,如果需要认证,可以在连接字符串中添加用户名和密码,如下所示:

2. 特殊字符未进行 URL 编码

在连接字符串中,如果包含了一些特殊字符,比如 @:/ 等,需要进行 URL 编码。否则,这些特殊字符会被解析成连接字符串的一部分,导致格式错误。

下面是一个未进行 URL 编码的连接字符串的例子:

在这个例子中,@: 字符没有进行 URL 编码,导致连接字符串格式错误。应该将 @ 编码成 %40,将 : 编码成 %3A,如下所示:

3. 连接字符串中包含空格

在连接字符串中,不能包含空格,否则会导致连接字符串格式错误。如果需要在连接字符串中包含空格,可以使用 %20 进行 URL 编码。

下面是一个包含空格的连接字符串的例子:

在这个例子中,连接字符串中包含了一个空格,导致连接字符串格式错误。应该将空格编码成 %20,如下所示:

4. 示例代码

下面是一个完整的示例代码,演示了如何使用 Mongoose 连接 MongoDB 数据库:

-- -------------------- ---- -------
----- -------- - --------------------

----- --- - ---------------------------------------------------------

--------------------- - ---------------- ---- --
  -------- -- -
    ---------------------- -- ----------
  --
  ------------ -- -
    -------------------
  ---

在这个示例代码中,我们使用了 mongoose.connect() 方法连接 MongoDB 数据库。连接字符串中包含了用户名、密码、地址、端口号和数据库名称等信息。在 mongoose.connect() 方法中,我们还传递了一个选项对象 { useNewUrlParser: true },告诉 Mongoose 使用新的 URL 解析器。如果不传递这个选项,会出现一个警告信息。如果连接成功,就会输出一条信息 "Connected to MongoDB",否则会输出错误信息。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d96e9fa941bf713410d301

纠错
反馈