2011-07-30 101 views
1

短版本:我基本上想要做什麼show collections在mongo shell,在貓鼬中。在不知道Schema/Collection名稱的情況下獲取Mongoose Schema和文檔?

長的版本:

我想創建一個應用程序,允許用戶基本建立自己的模式的>集合>使用蒙戈+貓鼬+ node.js中的文檔

此應用程序的第一步是顯示先前創建的集合及其文檔。但是,由於這些將由用戶創建,他們的名字不知道。 我發現,是最接近的代碼是:

function find (collec, query, callback) { 
    mongoose.connection.db.collection(collec, function (err, collection) { 
    collection.find(query).toArray(callback); 
    }); 
} 

但我不知道什麼是集合的名稱是這樣我就可以不通過「COLLEC」參數。

那麼,任何人都知道如何獲得收藏列表而不知道他們的名字?

回答

2

我結束了使用節點MongoDB的本地(即之上貓鼬作品蒙戈驅動程序),以獲得集合名稱:

var nmn_connect = require('mongoose/node_modules/mongodb').connect; 

nmn_connect('mongo://localhost:27017/DATABASE', function(err, db) { 
    if(!err){ 
     db.collectionNames(function(err, names){ // what I was looking for 
      if(!err){ 
       console.log(names); 
       db.close(); 
      }else{ 
       console.log(err); 
       db.close(); 
      } 
     });  
    }else{ 
     console.log(err) 
    } 
}); 

通過mongoose.connect()返回的對象有沒有類似collectionNames()的方法,我可以找到。

0

我什麼都不知道貓鼬,但這個頁面會提示您可以使用mongoose.connection.collections訪問所有集合:http://mongoosejs.com/docs/api.html

每個集合又應該有一個name屬性。

+1

我覺得mongoose.connection.collections就是貓鼬「高速緩存」是集合,所以直到你添加一個新的或從數據庫中加載特定集合是空的。 – Marcus

0

試試這個:

mongoose.connection.db.collectionNames(function (err, names) { 

}); 
相關問題