Mongoose:填充所有子对象

时间:2015-01-31 10:06:05

标签: node.js mongodb mongoose

我正在使用通用的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

的类型

帮助?

1 个答案:

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

这有效,但我想应该有更好的解决方案