我试图在mongodb(v4.0.2)中获得所有集合名称,并使用mongodb@3.1.10 nodejs驱动程序。从文档中,我可以看到listCollections
可能有效,但是运行以下命令:
const Db = require('mongodb').Db
const Server = require('mongodb').Server
const db = new Db(dbName, new Server(host, port, options), {})
db.listCollections().toArray((error, collectionNames) => {
console.error(error)
console.log(JSON.stringify(collectionNames))
})
…导致此错误:
if(this.serverConfig.capabilities()。 hasListCollectionsCommand ){
TypeError:无法读取null的属性'hasListCollectionsCommand'
在Db.listCollections({path} /node_modules/mongodb/lib/db.js:493:39)
位于db.createCollection({path} /sampleMongoDB.js:19:8)
在错误({path} /node_modules/mongodb/lib/utils.js:415:14)
在executeCallback({path} /node_modules/mongodb/lib/utils.js:404:25)
在executeOperation({path} /node_modules/mongodb/lib/utils.js:422:7)
在Db。 ({path} /node_modules/mongodb/lib/db.js:431:12)
在Db.deprecated [as createCollection]({path} / node_modules / mongodb /lib/utils.js:661:17)
在对象上。<匿名>({path} /sampleMongoDB.js:18:6)
在Module._compile(module.js:653:30)
在Object.Module._extensions..js(module.js:664:10)
我的问题是:
答案 0 :(得分:0)
我能够解决。 MongoClient's instance返回一个db
实例,这反过来又有助于运行mongodb.Db
方法。
这是一个有效的示例代码(请参考MongoDB guides)
const options = {
useNewUrlParser: true, // Add this, if you wish to avoid {https://stackoverflow.com/questions/50448272/avoid-current-url-string-parser-is-deprecated-warning-by-setting-usenewurlpars} issue
}
const client = new MongoClient(connectionUri, options)
return client.connect().then(() => {
const db = client.db(dbName)
return db.listCollections()
.toArray()
.then((collections) => {
// Collections array
})
})
@Community mods-如果需要,请关闭此问题。