Model.find()在mongoose中返回空白

我正在处理mongoose在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); } }); }; 

我已经有我在数据库中的条目但上面的代码返回空。 为什么?

编辑:下面的代码也返回空:

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

你的问题是mongoose复数集合。 mongoose正在查询“组织”,但是你的数据是以“组织”的forms出现的。 让他们匹配,你应该很好去。 您可以通过mongo shell在mongodb中重命名它,或者告诉mongoose它。 从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) 

从官方文档

人口是使用其他集合中的文档自动replace文档中的指定path的过程。

尝试它没有填充

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

我会让彼得里昂更简单的回答,只添加在MongoDB收集名称( 字母 )。 例如,如果您要创build要拨打用户或密码的集合,则只需在最后一个字( 用户密码 )中写上字母。