我是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));
}
});
答案 0 :(得分:1)
您可以使用 statics 创建模型。这是架构
的方法示例PostSchema.statics = {
getAll: function(cb) {
return this
.find()
.populate('author', 'email name')
.exec(cb);
}
}
你仍然应该使用&#34;填充&#34;,但它将在模式文件中,所以你将来不会关心它