【问题标题】:Mongoose - check if database existsMongoose - 检查数据库是否存在
【发布时间】:2019-06-24 06:07:25
【问题描述】:

如果数据库不存在,则指定 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

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

【问题讨论】:

    标签: reactjs mongoose mongoose-schema


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。最终,我使用了 Stitch SDK 而不是 Mongoose。这要容易得多。 Create a Stitch App 文档非常好。
    猜你喜欢
    • 2017-12-11
    • 2021-11-30
    • 2014-07-08
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多