使用Mongoose + Express预填充文档

时间:2014-04-30 00:25:10

标签: node.js express mongoose keystone

我是Node + Mongoose的新手,目前正在使用KeystoneJS创建API。我已设法用作者的电子邮件和姓名填充所有帖子。我的问题是,有没有办法用作者每次填充帖子,可能还有一些中间件,而不必在我检索帖子的每种方法中重写它?我的目标是在代码中不分散populate('author', 'email name')个多个实例。例如,在将来,我还想包括作者的个人资料照片网址,我希望能够在一个地方进行更改,然后会反映在我检索帖子的每个地方。

目前的实施:

Post.model.find().populate('author', 'email name').exec(function (err, posts) {
    if (!err) {
        return res.json(posts);
    } else {
        return res.status(500).send("Error:<br><br>" + JSON.stringify(err));
    }
});

Post.model.findById(req.params.id).populate('author', 'email name').exec(function (err, post) {
    if(!err) {
        if (post) {
            return res.json(post);
        } else {
            return res.json({ error: 'Not found' });
        }
    } else {
        return res.status(500).send("Error:<br><br>" + JSON.stringify(err));
    }
});

1 个答案:

答案 0 :(得分:1)

您可以使用 statics 创建模型。这是架构

的方法示例
PostSchema.statics = {
getAll: function(cb) {
    return this
        .find()
        .populate('author', 'email name')
        .exec(cb);
}
}

你仍然应该使用&#34;填充&#34;,但它将在模式文件中,所以你将来不会关心它