我正在尝试通过Mongoose.connect()连接MongoDB Atlas上的集群,但每次尝试连接时都会出现异常"MongoError:authentication fail"。我知道MongoDB Atlas是新的作为服务提供的Mongo数据库,难道它还不被Mongoose支持吗?
我正在尝试通过Mongoose.connect()连接MongoDB Atlas上的集群,但每次尝试连接时都会出现异常"MongoError:authentication fail"。我知道MongoDB Atlas是新的作为服务提供的Mongo数据库,难道它还不被Mongoose支持吗?
MongoError: 认证失败 - 这意味着您的用户名、密码或数据库名称不正确 -
URI 示例 -
const uri =
"mongodb+srv://<username>:<password>@firstcluster.4rc4s.mongodb.net/<dbname>?retryWrites=true&w=majority";
假设用户名是 - najim,密码是1234,dbname是pets(注意 - 默认的dbname是test,但您可以写任何想要的名称),那么我的URI将使用上述凭据为:
const mongoAtlasUri =
"mongodb+srv://najim:1234@firstcluster.4rc4s.mongodb.net/pets?retryWrites=true&w=majority";
连接 moongoose
try {
// Connect to the MongoDB cluster
mongoose.connect(
mongoAtlasUri,
{ useNewUrlParser: true, useUnifiedTopology: true },
() => console.log(" Mongoose is connected")
);
} catch (e) {
console.log("could not connect");
}
const mongoAtlasUri =
"mongodb+srv://<username>:<password>@firstcluster.4rc4s.mongodb.net/<dbname>?retryWrites=true&w=majority";
try {
// Connect to the MongoDB cluster
mongoose.connect(
mongoAtlasUri,
{ useNewUrlParser: true, useUnifiedTopology: true },
() => console.log(" Mongoose is connected"),
);
} catch (e) {
console.log("could not connect");
}
const dbConnection = mongoose.connection;
dbConnection.on("error", (err) => console.log(`Connection error ${err}`));
dbConnection.once("open", () => console.log("Connected to DB!"));
try {
mongoose.connect( uri, {useNewUrlParser: true, useUnifiedTopology: true}, () =>
console.log("connected"));
}catch (error) {
console.log("could not connect");
}
这个很好用,试试看吧。
"mongodb+srv://:@cluster0.vvkuk.mongodb.net/" 在Atlas中,进入安全性,找到网络访问,会有编辑和删除的小按钮,点击编辑,在编辑中,会有两个选项,第一个选项是添加当前IP地址,第二个选项是允许从任何地方访问。 选择第一个选项,然后点击确认。