我使用mongo-nodejs 2.2并升级到3.0。升级后,我发现Db类中的方法db()
不再存在(http://mongodb.github.io/node-mongodb-native/3.0/api/Db.html)。此方法对于切换到不同的数据库实例非常有用。我想知道如何使用最新版本切换到不同的数据库。
答案 0 :(得分:0)
好的,它已经消失了,它被记录为已经消失,真正的信息是你应该使用Mongoclient.prototype.db
代替:
来自3.0 Changes:
我们删除了以下API方法。
- Db.prototype.authenticate
- Db.prototype.logout
- Db.prototype.open
- 的 Db.prototype.db 强>
...
我们添加了以下API方法。
- MongoClient.prototype.logout
- MongoClient.prototype.isConnected
- 的 MongoClient.prototype.db 强>
此处的基本教训是,无论您何时直接使用Db
,都应该使用MongoClient
实例。这是从第一个连接获得的:
const { MongoClient } = require('mongodb');
(async function() {
try {
const conn = await MongoClient.connect('mongodb://localhost');
let test = conn.db('test');
let admin = test.admin();
console.log(admin);
let another = conn.db('another');
console.log(another);
} catch(e) {
console.error(e);
} finally {
process.exit();
}
})()
返回输出,如:
Admin {
s:
{ db:
Db {
domain: null,
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
s: [Object],
serverConfig: [Getter],
bufferMaxEntries: [Getter],
databaseName: [Getter] },
topology:
Server {
domain: null,
_events: [Object],
_eventsCount: 25,
_maxListeners: Infinity,
clientInfo: [Object],
s: [Object] },
promiseLibrary: [Function: Promise] } }
Db {
domain: null,
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
s:
{ databaseName: 'another',
dbCache: {},
children: [],
topology:
Server {
domain: null,
_events: [Object],
_eventsCount: 25,
_maxListeners: Infinity,
clientInfo: [Object],
s: [Object] },
options:
{ readPreference: [Object],
promiseLibrary: [Function: Promise] },
logger: Logger { className: 'Db' },
bson: BSON {},
readPreference: ReadPreference { mode: 'primary', tags: undefined, options: undefined },
bufferMaxEntries: -1,
parentDb: null,
pkFactory: undefined,
nativeParser: undefined,
promiseLibrary: [Function: Promise],
noListener: false,
readConcern: undefined },
serverConfig: [Getter],
bufferMaxEntries: [Getter],
databaseName: [Getter] }
有趣的是,admin()
个辅助工具仍然存在于Db
个实例中,当然这对于旧的db()
实际上只是一个“预先填充”的选择。
从底线开始,使用连接中的MongoClient
实例代替将来的所有代码。