能否让Mongoose返回数据库连接对象,实现类似MySQL的显式连接?
在Mongoose中显式指定数据库连接是可行的
你可以使用Mongoose的mongoose.createConnection()方法创建独立的连接对象,和你在MySQL中使用createConnection的逻辑一致,这个方法会直接返回连接实例,完全由你显式控制使用。
具体实现步骤:
- 创建显式连接对象
const mongoose = require('mongoose'); const bluebird = require('bluebird'); // 创建并获取连接实例 const dbConn = await mongoose.createConnection('mongodb://localhost:27017/your_db_name', { promiseLibrary: bluebird, // 可添加其他配置项,如authSource、poolSize等 });
- 基于显式连接操作数据库
- 方式一:基于该连接定义模型,模型会自动绑定这个连接执行操作
// 基于显式连接定义Schema和模型 const UserSchema = new mongoose.Schema({ name: String, email: String }); const User = dbConn.model('User', UserSchema); // 使用模型执行查询,底层会使用我们创建的dbConn连接 const user = await User.findOne({ name: '张三' });
- 方式二:直接使用连接对象执行原生MongoDB操作
// 直接操作集合,和MongoDB原生驱动用法一致 const users = await dbConn.collection('users').find({}).toArray();
和mongoose.connect()的区别
mongoose.connect()会创建一个默认全局连接,后续定义的模型默认都会使用这个连接;而createConnection()创建的是独立的连接实例,你可以根据需要在不同场景下指定使用哪个连接,尤其适合需要同时连接多个MongoDB数据库的场景。
内容的提问来源于stack exchange,提问作者Sandra Schlichting
相关产品推荐
相关产品推荐

