如果命名的Atlas数据库不存在,则Mongoose connection不会返回错误。只要URI和凭据有效,连接就总是成功的。
如果指定的数据库不存在,是否可以返回错误?
我正在Jelo's MERN write-up上为我的应用程序建模。
const mongoose = require("mongoose");
const Data = require("./data");
const API_PORT = 3001;
const app = express();
const router = express.Router();
// Atlas database
const uri = "mongodb+srv://USERNAME:PASSWORD@CLUSTER-xdmza.mongodb.net/"
const dbName = "fakedatabase"
const options = {
autoReconnect: true,
useNewUrlParser: true,
dbName: dbName
}
// Connect backend app to MongoDB with options
mongoose.connect(uri, options);
let db = mongoose.connection;
// connection event handlers
db.on("error", console.error.bind(console, "MongoDB connection error:"));
db.on("connected", console.error.bind(console, "MongoDB database: " + dbName));
db.on("disconnected", console.error.bind(console, "MongoDB database: " + dbName));
上面的代码返回:
MongoDB connected: fakedatabase
我想触发“错误”事件处理程序并记录相应的消息。
答案 0 :(得分:0)
不确定是否可以触发错误事件处理程序,但是您可以使用Mongo的listDatabases函数检查数据库是否存在。使用猫鼬可以这样完成:
db.once("open", () => {
new mongoose.mongo.Admin(db).listDatabases((err, res) => {
//Array of databases is in res.databases
});
});