Получение схем и документов Mongoose без знания имен схем / коллекций? - PullRequest
1 голос
/ 30 июля 2011

Короткая версия: я в основном хочу сделать то, что show collections делает в оболочке монго, в мангусте.

Длинная версия:

Я хочу создать приложение, которое позволит пользователям создавать собственные схемы> Коллекции> Документы, используя mongo + mongoose + node.js.

Первым шагом этого приложения будет показ ранее созданных коллекций и их документов. Но так как они будут созданы пользователем, их имена не известны. Код, который я нашел, был ближе всего:

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

Но я не знаю, как называется коллекция, поэтому я не могу передать параметр 'collec'.

Итак, кто-нибудь знает, как получить список коллекций, не зная их имен?

Ответы [ 3 ]

2 голосов
/ 31 июля 2011

В итоге я использовал node-mongodb-native (драйвер mongo, над которым работает mongoose), чтобы получить имена коллекций:

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 голосов
/ 13 июля 2014

попробуйте это:

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

});
0 голосов
/ 31 июля 2011

Я ничего не знаю о mongoose, но на этой странице предлагается, чтобы вы могли использовать mongoose.connection.collections для доступа ко всем коллекциям: http://mongoosejs.com/docs/api.html

каждая коллекция снова должна иметь атрибут name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...