【问题标题】:When ever I use mongoose, i get an error that collectionNames function not found [duplicate]当我使用猫鼬时,我收到一个错误,即找不到 collectionNames 函数 [重复]
【发布时间】:2016-06-19 05:51:27
【问题描述】:

在完成了本地 mongo 命令之后,我尝试了 ODM,它是 mongoose,它扩展了 MongoDB 的功能。

我从本地主机上的现有数据库中简单地获取我的集合开始。我能够连接到我的数据库,但我无法获取集合。 但是我无法这样做。

 

 /**
 * Uses MongooseJS to Connect to MongoDB
 * .Maps out all collections within
 */

var mongoose = require('mongoose')
  , MONGO_DB = 'mongodb://localhost/astro';

mongoose.connect(MONGO_DB);

mongoose.connection.on('open', function(){
  mongoose.connection.db.collectionNames(function(error, collections) {
    if (error) {
      throw new Error(error);
    } else {
      collections.map(function(collection) {
        console.log('found collection %s', collection.name);
      });
    }
  });
});

mongoose.connection.on('error', function(error){
  throw new Error(error);
});
TypeError: mongoose.connection.db.collectionNames is not a function
at NativeConnection.<anonymous> (/Users/sagarmunjal/Desktop/untitled folder/script.js:29:26)
at emitNone (events.js:80:13)
at NativeConnection.emit (events.js:179:7)
at open (/Users/sagarmunjal/Desktop/untitled folder/node_modules/mongoose/lib/connection.js:511:11)
at NativeConnection.Connection.onOpen (/Users/sagarmunjal/Desktop/untitled folder/node_modules/mongoose/lib/connection.js:520:5)
at /Users/sagarmunjal/Desktop/untitled folder/node_modules/mongoose/lib/connection.js:476:11
at /Users/sagarmunjal/Desktop/untitled folder/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js:60:5
at /Users/sagarmunjal/Desktop/untitled folder/node_modules/mongodb/lib/db.js:227:5
at connectHandler (/Users/sagarmunjal/Desktop/untitled folder/node_modules/mongodb/lib/server.js:286:7)
at g (events.js:273:16)
at emitOne (events.js:90:13)
at emit (events.js:182:7)
at /Users/sagarmunjal/Desktop/untitled folder/node_modules/mongodb-core/lib/topologies/server.js:504:23
at commandCallback (/Users/sagarmunjal/Desktop/untitled folder/node_modules/mongodb-core/lib/topologies/server.js:936:9)
at Callbacks.emit (/Users/sagarmunjal/Desktop/untitled folder/node_modules/mongodb-core/lib/topologies/server.js:116:3)
at null.messageHandler (/Users/sagarmunjal/Desktop/untitled folder/node_modules/mongodb-core/lib/topologies/server.js:282:23)

/Users/sagarmunjal/Desktop/untitled 文件夹/node_modules/mongodb/lib/server.js:289 process.nextTick(function() { throw err; }) ^

TypeError: mongoose.connection.db.collectionNames 不是函数 在本地连接。 (/Users/sagarmunjal/Desktop/untitled 文件夹/script.js:29:26) 在 emitNone (events.js:80:13) 在 NativeConnection.emit (events.js:179:7) 打开时(/Users/sagarmunjal/Desktop/untitled 文件夹/node_modules/mongoose/lib/connection.js:511:11) 在 NativeConnection.Connection.onOpen (/Users/sagarmunjal/Desktop/untitled 文件夹/node_modules/mongoose/lib/connection.js:520:5) 在 /Users/sagarmunjal/Desktop/untitled 文件夹/node_modules/mongoose/lib/connection.js:476:11 在 /Users/sagarmunjal/Desktop/untitled 文件夹/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js:60:5 在 /Users/sagarmunjal/Desktop/untitled 文件夹/node_modules/mongodb/lib/db.js:227:5 在 connectHandler (/Users/sagarmunjal/Desktop/untitled 文件夹/node_modules/mongodb/lib/server.js:286:7) 在 g (events.js:273:16) 在 emitOne (events.js:90:13) 在发出 (events.js:182:7) 在 /Users/sagarmunjal/Desktop/untitled 文件夹/node_modules/mongodb-core/lib/topologies/server.js:504:23 在 commandCallback (/Users/sagarmunjal/Desktop/untitled 文件夹/node_modules/mongodb-core/lib/topologies/server.js:936:9) 在 Callbacks.emit (/Users/sagarmunjal/Desktop/untitled 文件夹/node_modules/mongodb-core/lib/topologies/server.js:116:3) 在 null.messageHandler (/Users/sagarmunjal/Desktop/untitled 文件夹/node_modules/mongodb-core/lib/topologies/server.js:282:23) [nodemon] 应用程序崩溃 - 启动前等待文件更改...

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    这似乎有道理,Moongose 确实没有 collectionNames api。

    尝试类似:

    mongoose.connection.on('open', function(){
            for (var i in mongoose.connection.collections) {
                console.log(mongoose.connection.collections[i]);
            }
    });
    

    【讨论】:

      【解决方案2】:

      mongoose.connection.db.collectionNames 已被弃用。我建议改用mongoose.connection.db.listCollections()

      查看另一个 stackoverlow 帖子 here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-25
        • 2011-11-09
        • 1970-01-01
        • 2021-07-26
        相关资源
        最近更新 更多