猫鼬-检查数据库是否存在

时间:2019-01-30 20:57:59

标签: reactjs mongoose mongoose-schema

如果命名的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

我想触发“错误”事件处理程序并记录相应的消息。

1 个答案:

答案 0 :(得分:0)

不确定是否可以触发错误事件处理程序,但是您可以使用Mongo的listDatabases函数检查数据库是否存在。使用猫鼬可以这样完成:

db.once("open", () => {
    new mongoose.mongo.Admin(db).listDatabases((err, res) => {
         //Array of databases is in res.databases   
    });
});