我试图在以下位置找到这个问题的解决方案:http: //mongodb.github.io/node-mongodb-native/
但是,我找不到从 Node.js 应用程序中列出所有可用 MongoDB 数据库的解决方案。
我试图在以下位置找到这个问题的解决方案:http: //mongodb.github.io/node-mongodb-native/
但是,我找不到从 Node.js 应用程序中列出所有可用 MongoDB 数据库的解决方案。
您现在可以使用 Node Mongo 驱动程序执行此操作(使用 3.5 测试)
const MongoClient = require("mongodb").MongoClient;
const url = "mongodb://localhost:27017/";
const client = new MongoClient(url, { useUnifiedTopology: true }); // useUnifiedTopology removes a warning
// Connect
client
.connect()
.then(client =>
client
.db()
.admin()
.listDatabases() // Returns a promise that will resolve to the list of databases
)
.then(dbs => {
console.log("Mongo databases", dbs);
})
.finally(() => client.close()); // Closing after getting the data
只有管理员可以查看所有数据库。因此,使用管理员凭据连接到 mongodb 数据库,然后创建一个管理员实例await db.admin()
,然后列出所有数据库await adminDB.listDatabases()
const MongoClient = require('mongodb').MongoClient;
let client = await MongoClient.connect(process.env.MONGO_DB_URL);
const db = await client.db(process.env.DEFAULT_DB_NAME);
let adminDB = await db.admin();
console.log(await adminDB.listDatabases());
*很难通过 db.admin().listDatabases 获取列表,下面的代码在 nodejs 中可以正常工作 *
const { promisify } = require('util');
const exec = promisify(require('child_process').exec)
async function test() {
var res = await exec('mongo --eval "db.adminCommand( { listDatabases: 1 }
)" --quiet')
return { res }
}
test()
.then(resp => {
console.log('All dbs', JSON.parse(resp.res.stdout).databases)
})
test()