Подтвердить что ты не робот

Model.find() возвращает пустую в mongoose

Я работаю над mongoose, чтобы перечислить все данные из коллекции в db в mongodb:

из запросов:

http://localhost:3000/listdoc?model=Organization

Я делаю следующий код:

exports.listDoc = function(req, res) {    
var Model = mongoose.model(req.query.model); //This is defined and returns my desired model name
        Model.find().populate('name').exec(function(err, models) {
            if (err) {
                res.render('error', {
                    status: 500
                });
            } else {
                res.jsonp(models);
            }
        });
};

У меня уже есть запись в базе данных Но приведенный выше код возвращается пустым. Почему?

EDIT: следующий код также возвращает пустой:

exports.listDoc = function(req, res) {
    var Model = mongoose.model(req.query.model);
    Model.find({},function(err,models){
        console.log(models);
         if (err) {
            res.render('error', {
                status: 500
            });
        } else {
            res.jsonp(models);
        }
    });
};

используемая схема:

var Organization = mongoose.Schema({
  name: String
});
4b9b3361

Ответ 1

Ваша проблема в том, что мангуста плюрализует коллекции. Mongoose запрашивает "организации", но ваши данные находятся в mongodb как "организация". Сделайте их подходящими, и вам должно быть хорошо идти. Вы можете переименовать его в mongodb через оболочку mongo или сообщить об этом мангусте. Из документов mongoose:

var schema = new Schema({ name: String }, { collection: 'actor' });

// or

schema.set('collection', 'actor');

// or

var collectionName = 'actor'
var M = mongoose.model('Actor', schema, collectionName)

Ответ 2

От официального doc

Население - это процесс автоматической замены указанного пути в документе с документами из других коллекций.

Попробуйте его без заполнения

Model.find({}).exec(function(err, models) {
            if (err) {
                res.render('error', {
                    status: 500
                });
            } else {
                res.json(models);
            }
        });

Ответ 3

Я сделаю Peter Lyons ответ проще, добавьте только имя коллекции mongodb (s). Например, если вы создаете коллекцию, которую хотите называть пользователем или паролем, просто напишите s письмо в последнем слове ( пользователи, пароли).