Node.js 如果未建立连接,请创建到mongodb的连接
我不熟悉node.js和mongoose 我正在尝试检查提供名称的数据库是否存在 如果存在, 建立一个连接并使用它 如果没有,, 然后用一些集合创建数据库 我正在使用mongoose,因为mongoose提供了3种方法来建立连接。我不知道哪一套对我来说是最好的,也不知道如何处理它们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';
- 连接
- 创建连接
- 联系
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模型的一些核心概念,因为从这里的语气来看,你似乎并不熟悉。