如何在Node.js中使用Mongoose获取MongoDB数据库的所有集合名称
解决打印MongoDB test数据库所有集合名称的问题
原代码存在两处关键问题导致无法正常运行:
mongoose.connect的连接字符串末尾多了一个多余逗号,属于语法错误listCollections().toArray()的回调未处理异常,出现问题时无输出且无法排查
修正后的代码(推荐使用async/await)
const mongoose = require('mongoose'); mongoose.connect('mongodb://127.0.0.1:27017/test') .then(async () => { console.log("Database Connected"); try { const collections = await mongoose.connection.db.listCollections().toArray(); if (collections.length === 0) { console.log("当前test数据库中没有任何集合"); return; } collections.forEach((collection) => { console.log(collection.name); }); } catch (err) { console.error("获取集合列表失败:", err); } }) .catch((err) => { console.error("Database connection Failed:", err); });
另一种Promise链式调用写法
const mongoose = require('mongoose'); mongoose.connect('mongodb://127.0.0.1:27017/test') .then(() => { console.log("Database Connected"); return mongoose.connection.db.listCollections().toArray(); }) .then(collections => { if (collections.length === 0) { console.log("当前test数据库中没有任何集合"); return; } collections.forEach((collection) => { console.log(collection.name); }); }) .catch(err => { console.error("操作失败:", err); });
核心修正说明
- 移除连接字符串后的多余逗号,修复语法错误
- 增加异常捕获逻辑,无论是数据库连接失败还是获取集合列表出错,都会输出具体错误信息便于排查
- 添加集合为空的判断,避免数据库无集合时无任何输出的困惑
内容的提问来源于stack exchange,提问作者pushkraj_8
相关产品推荐
相关产品推荐

