所以我有故事和评论模型。 另外,我有INDEX和SHOW路线。
因此,在INDEX路线上,我有兴趣仅返回一些已发表的评论。我做了下一个方法:
StorySchema.methods.comments = function (cb) {
return this.model('Comment').find({ storyId: this._id, published: true }, cb);
}
这是我的INDEX路线(当前显示4个最新故事):
Story.find({}, '-content')
.sort('-dateCreated')
.limit(4)
.exec((err, found) => {
found.map(async f => f.comments = await f.comments())
if (err) return res.json({ err });
res.json(found);
})
我在StorySchema中没有定义 comments 字段,但是我只是出于显示原因而希望将其附加,我不打算保存它。问题是, 评论 字段未显示。即使我在Schema中定义它,它也不会改变。
如何仅出于显示目的将字段附加到猫鼬文档上?
答案 0 :(得分:0)
您在上面编写的查询
Story.find({}, '-content')
等效于
Select -content from Story
简而言之,当您计划要添加作为响应的字段时,这是唯一将作为响应而对您进行投影的字段。
对于您的情况,您可以考虑使用aggregation
框架及其管道$project
或$addField
,这就是它们在这里的原因。我的意思是他们不修改您的文档架构。是的,它们可以轻松用于在您的响应中投影额外的字段。您甚至可以使用多个运算符或表达式将值添加到这些虚拟字段中