将自定义字段附加到Mongoose模式

时间:2018-06-26 10:12:33

标签: node.js mongodb express mongoose

所以我有故事评论模型。 另外,我有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中定义它,它也不会改变。

如何仅出于显示目的将字段附加到猫鼬文档上?

1 个答案:

答案 0 :(得分:0)

您在上面编写的查询

Story.find({}, '-content')

等效于

Select -content from Story

简而言之,当您计划要添加作为响应的字段时,这是唯一将作为响应而对您进行投影的字段。

对于您的情况,您可以考虑使用aggregation框架及其管道$project$addField,这就是它们在这里的原因。我的意思是他们不修改您的文档架构。是的,它们可以轻松用于在您的响应中投影额外的字段。您甚至可以使用多个运算符或表达式将值添加到这些虚拟字段中