我发现最新版本的 MongoDB nodejs 驱动程序引入了MongoClient类,这是建立连接后我可以获得的第一个类实例。但它不提供默认的数据库实例。下面是源代码。
MongoClient.connect(url, (err, client) => {
if(err) {
return null;
}
client.db('test'); // how can I know the database name? Do I need to parse the url?
});
Run Code Online (Sandbox Code Playgroud)
上面的代码展示了如何在连接后获取 mongo 客户端实例。我需要调用client.db以获取数据库实例。我的问题是我如何知道client实例中的默认数据库名称。我得到的只是连接url。我是否需要解析连接 url 才能获取上例中的连接数据库test?
我知道有一种方法可以db.getName()返回数据库名称。但是如何在db不解析 URL的情况下获取实例以从连接中获取数据库名称?
在当前mongodb驱动程序中。类Db实例具有databaseName属性。因此获取已初始化的数据库名称MongoClient很简单
const db = mongoClient.db();
const dbName = db.databaseName;
Run Code Online (Sandbox Code Playgroud)
从 MongoDB 4.4 开始,这似乎发生了变化。您可以通过databaseName属性访问当前数据库名称:
const client = await MongoClient.connect(DB_HOST, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
db = client.db(DB_NAME);
console.log(db.databaseName);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4891 次 |
| 最近记录: |