Model.find()在mongoose中返回empty

cod*_*ode 24 mongoose mongodb node.js express

我正在使用mongoose列出mongodb中db中集合的所有数据:

来自要求:

http://localhost:3000/listdoc?model=Organization
Run Code Online (Sandbox Code Playgroud)

我正在做以下代码:

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);
            }
        });
};
Run Code Online (Sandbox Code Playgroud)

我已经在数据库中输入了我的条目但上面的代码返回空.为什么?

编辑:以下代码也返回空:

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);
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

使用的架构:

var Organization = mongoose.Schema({
  name: String
});
Run Code Online (Sandbox Code Playgroud)

Pet*_*ons 71

你的问题是mongoose复数集合.Mongoose正在查询"组织",但您的数据是mongodb作为"组织".让它们匹配,你应该很高兴.您可以通过mongo shell在mongodb中重命名它,或者告诉mongoose.来自mongoose 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)
Run Code Online (Sandbox Code Playgroud)

  • +1.这种简单的错误会消耗你所有宝贵的时间...... (3认同)
  • 非常感谢...我花了最后几个小时来挖掘为什么我要继续获得一个空阵列. (2认同)
  • 多么令人讨厌的功能.谢谢答案 (2认同)
  • 我用下划线命名该集合,我不知道这也会导致问题 (2认同)