node.js - ExpressJS 中的 db.listCollections() 返回错误

标签 node.js mongodb express

我正在使用 ExpressJs + MongoDB 并且以下代码返回错误:

var db = monk(DB_URL);
app.use(function (req, res, next) {
  req.db = db;
  next();
});

app.get("/view_collections", function (req, res) {
    var db = req.db;
    db.listCollections().toArray(function (err, collections) {
        console.log(collections);
    }); 
});

错误是:

TypeError: db.listCollections is not a function.

其他功能完美运行。例如,以下代码有效:

app.get('/testCollection', function (req, res) {
  var collection = req.db.get('testData');
  collection.find({}, {
    limit: 300,
    sort: {
      timestamp: -1
    }
  }, (e, entries) => {
    res.render('testView', {
      entries: entries
    });
  });
});

我尝试了 db.getCollectionNames()db.listCollections() 但都返回相同的错误,但在 shell db.getCollectionNames() 有效。

谁能告诉我如何获取里面的 MonogoDB 集合列表,

app.get("/view_collections", function (req, res) {
    //Here
});

最佳答案

我遇到了同样的错误,解决办法是:

MongoClient.connect(url, function(err, client) {


     const db = client.db(DBNAME)

     db.listCollections().toArray(function(err, items) {
        console.log(items)
            //and u can loop over items to fetch the names
            client.close();
    });
})

关于node.js - ExpressJS 中的 db.listCollections() 返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46717214/

相关文章:

javascript - NestJS/Express 从外部 URL 返回 PDF 文件作为响应

javascript - 带有多个选项卡的 Node.js 和 Socket.io

node.js - Windows Node : always get either "Error: ENOENT: no such file or directory, open" or "Error: EACCES: permission denied, open"

javascript - MongoDb批量插入限制问题

php - 自动加载配置不加载 MongoDB 类

mongodb - 在 mongodb 中创建具有非聚合字段的 View 而不将其放入 _id 字段

node.js - 错误: Callback was already called in loopback

javascript - Express.js 服务器如何知道浏览器是否关闭或重新加载?

javascript - Browserify 转换插件用于评估 IIFE 并在捆绑期间替换为其结果

javascript - 如何访问分配给另一个对象的属性的数组内的对象的属性?