使用Mongoose npm包连接MongoDB时遭遇MongoError:数据库名称不得包含字符'/'的问题咨询
问题原因与解决方法
嘿,我立刻就发现问题所在啦!你遇到的MongoError: database names cannot contain the character '/'错误,根源在于MongoDB连接字符串的格式写错了。
错误原因
你当前的连接字符串是:
mongoose.connect("mongodb://127.0.0.1/27017/task-manager-api", { ... });
这里的问题是端口号27017的分隔符用错了——MongoDB连接字符串里,端口应该用**冒号:**跟在IP地址后面,而不是斜杠/。你现在的写法相当于把27017当成了数据库名的一部分,导致路径里出现了多个斜杠,最终触发了“数据库名不能包含/”的错误。
解决方法
只需要把连接字符串里的/27017改成:27017就行,修正后的连接字符串应该是:
mongoose.connect("mongodb://127.0.0.1:27017/task-manager-api", { useNewUrlParser: true, useCreateIndex: true });
另外补充个小知识点:因为MongoDB默认端口就是27017,所以你甚至可以省略端口部分,直接写成下面这样也能正常连接:
mongoose.connect("mongodb://127.0.0.1/task-manager-api", { useNewUrlParser: true, useCreateIndex: true });
修正后的完整代码
const mongoose = require("mongoose"); mongoose.connect("mongodb://127.0.0.1:27017/task-manager-api", { useNewUrlParser: true, useCreateIndex: true }); const User = mongoose.model("User", { name: { type: String, }, age: { type: Number, }, }); const me = new User({ name: "Sushant", age: 17 }); me.save() .then(() => { console.log(me); }) .catch((error) => { console.log("Error Spotted:", error); // 这里建议加上错误信息,方便后续排查 });
内容的提问来源于stack exchange,提问作者Rekepaw
相关产品推荐
相关产品推荐

