2015-10-19 93 views
2

我想检查Node.js中是否存在一个集合。我使用db.collectionNames来获取数据库中的名称列表,但没有发生任何事情。代码:db.collectionNames在Node.js中不起作用

connectDB(DBURL).then(function(db) { 
     console.log('db connect ok'); 

     db.collectionNames('test', function(err, collectionNames) { 
      console.log('get collection names'); 

      if(err) console.log(err); 
      else console.log(collectionNames); 
     }); 

    }, function(err) { 
     console.log(err); 
    }); 

connectDB(DBURL)是一个承诺的对象,它完美的作品。输出:

app-0 try to connect db 
app-0 db connect ok 

您可以看到collectionNames中没有任何输出功能。我不知道为什么。

我可以通过db.getCollectionNames在蒙戈外壳藏品名称:

> db.getCollectionNames() 
[ "system.indexes", "test" ] 

回答

2

您是否使用> 2.0版本的驱动程序?

如果是这样,您将需要使用listCollections instead - 这是在更新变化一个从1.x的

喜欢的东西:

db.listCollections().toArray(function(err, collections){ 
    //collections = [{"name": "coll1"}, {"name": "coll2"}] 
}); 
+0

是的!谢谢。我正在使用最新的驱动程序。我正在阅读https://mongodb.github.io/node-mongodb-native/contents.html,不能相信它没有提到这个更新。我在哪里可以阅读节点驱动器的最新文档? –

+0

我的答案中的链接将带您到1.0到2.0转换的更新日志。您所在的网站是正确的,但您正在查看1.4.9文档。查看同一网站上的2.0文档,例如:http://mongodb.github.io/node-mongodb-native/2.0/api/Db.html –