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要拨打用户或密码的集合,则只需在最后一个字( 用户 , 密码 )中写上字母。