Node.js 如果未建立连接,请创建到mongodb的连接

Node.js 如果未建立连接,请创建到mongodb的连接,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我不熟悉node.js和mongoose 我正在尝试检查提供名称的数据库是否存在 如果存在, 建立一个连接并使用它 如果没有,, 然后用一些集合创建数据库 我正在使用mongoose,因为mongoose提供了3种方法来建立连接。我不知道哪一套对我来说是最好的,也不知道如何处理它们 连接 创建连接 联系 通过谷歌搜索,我成功地利用createConnection确定了DB名称是否存在 var Admin = mongoose.mongo.Admin; var dbName='test';

我不熟悉node.js和mongoose

我正在尝试检查提供名称的数据库是否存在

如果存在, 建立一个连接并使用它

如果没有,, 然后用一些集合创建数据库

我正在使用mongoose,因为mongoose提供了3种方法来建立连接。我不知道哪一套对我来说是最好的,也不知道如何处理它们

  • 连接
  • 创建连接
  • 联系
通过谷歌搜索,我成功地利用createConnection确定了DB名称是否存在

var Admin = mongoose.mongo.Admin;
var dbName='test';
        /// create a connection to the DB    
        var connection = mongoose.createConnection('mongodb://localhost/' +dbName );
        connection.on('open', function () {
            // connection established
            new Admin(connection.db).listDatabases(function (err, result) {
                console.log('listDatabases succeeded');
                for (var i in result.databases) {
                    if (result.databases[i].name == dbName) {
                        mongoose.connect('mongodb://localhost/' + dbName);
                        next();
                        break; 
                    }
                }
            });
        });
我在route interceptor中编写了上述代码,因此对于每个请求,都将执行上述代码并尝试连接到mongodb(如果给定的db名称已经存在)


任何帮助都是值得感激的

MongoDB只是“动态地”创建数据库和集合名称空间,因此不需要编写任何代码来实现这一点。你的意图在这里并不清楚,为什么你会认为你需要这样做。但是,用连接数据库的方式拦截每个调用肯定不是一个好主意。数据库连接应该并且通常意味着在应用程序的生命周期中保持。这也基本上是由mongoose为您管理的。@BlakesSeven感谢您的回复……您能给我提供一个链接,详细解释这三个函数的详细信息和用法吗。如果您完全不熟悉,那么始终值得阅读关于其本身以及扩展的文档(甚至不完全熟悉)。你的问题并不清楚你到底想在这里做什么。但这确实表明你需要更加熟悉MongoDB的基本工作原理,以及mongoose和mongoose模型的一些核心概念,因为从这里的语气来看,你似乎并不熟悉。