我正在使用通用的rest api,它允许在请求中传递mongo集合名称并提供它的内容。
我的LIST命令如下所示:
router.get('/:collectionName', function(req, res, next) {
req.collection.find().sort('-created_on').exec(function(e, results){
if (e) return next(e);
res.send(results)
});
});
效果很好。
我的问题是我希望每个列表查询都填充子对象(如果存在)。
我试过了:
req.collection.find().populate().sort..
但很明显我收到了一个错误:
TypeError:utils.populate:无效路径。预期的字符串。得到了
的类型undefined
帮助?
答案 0 :(得分:0)
最后我不得不修补它:
router.get('/:collectionName', function(req, res, next) {
var populationQuery = [];
var paths = req.collection.schema.paths;
for (var path in paths) {
if (paths[path].caster) {
populationQuery.push({path: path});
}
}
req.collection.find().populate(populationQuery).sort('-created_on').exec(function (e, results) {
if (e) return next(e);
console.log(results);
res.send(results)
});
});
这有效,但我想应该有更好的解决方案