Mongoose - проверьте, существует ли база данных - PullRequest
0 голосов
/ 30 января 2019

A Mongoose Соединение с именованной базой данных Atlas не возвращает ошибок, если база данных не существует.Соединения всегда успешны, если действительны URI и учетные данные.

Можно ли вернуть ошибку, если указанная база данных не существует?

I'mмоделирование моего приложения на Jelo's MERN write .

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

Я хотел бы вызвать событие "error"обработчик и зарегистрируйте соответствующее сообщение.

1 Ответ

0 голосов
/ 07 марта 2019

Не уверен, что можно вызвать обработчик события ошибки, но вы можете проверить, существует ли база данных, используя функцию listDatabases из Mongo.С помощью Mongoose это можно сделать так:

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