web-dev-qa-db-fra.com

Model.find () renvoie vide dans mangouste

je travaille sur mangouste pour lister toutes les données d'une collection dans une base de données à Mongodb:

à partir des demandes:

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

je fais le code suivant:

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);
            }
        });
};

J'ai déjà mon entrée dans la base de données Mais le code ci-dessus retourne vide. Pourquoi?

EDIT: le code suivant renvoie également vide:

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);
        }
    });
};

schéma utilisé:

var Organization = mongoose.Schema({
  name: String
});
21
codeofnode

Votre problème est Mangouste pluralise les collections. Mongoose interroge "organisations" mais vos données sont dans mongodb en tant qu '"organisation". Faites-les correspondre et vous devriez être bon pour aller. Vous pouvez le renommer en mongodb via le shell mongo ou en informer la mangouste. De la mangouste docs:

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

// or

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

// or

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

Je ferai répondre plus simplement àPeter Lyons, et n’ajouterai que le nom de la collection mongodb (s letter). Par exemple, si vous créez une collection que vous souhaitez appeler-utilisateur ou mot de passe , écrivez simplementslettre en dernier du mot (utilisateurs,mots de passe).

0
Levon

D'officiel doc

Population est le processus de remplacement automatique de la spécifiée chemins dans le document avec le (s) document (s) d'une autre collection (s).

Essayez-le sans peupler

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