MongoDB 私有字段

Med*_*uly 4 mongoose mongodb node.js express

我有一个产品模型,它有很多领域。其中一些专用于前端应用程序,例如:

var GameSchema = new Schema({
    likes: {
        type: [{
            type: Schema.ObjectId,
            ref: 'User'
        }]
    },
    likes_count: {
       type: Number
    }
});
Run Code Online (Sandbox Code Playgroud)

我不需要likes_countDb 中的字段,但控制器只返回模型具有的字段,所以我将likes_count字段添加到 db 模型

exports.some_method = function(req, res){
    var game = req.game;
    game.likes_count = game.likes.length
    res.json(game);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在发送请求时将额外数据添加到 db 模型中而不将它们放入 db 中?

请注意,问题不在likes_count现场本身,我有不同的模型,但重点是在 db 模型上有额外的数据。

Med*_*uly 5

对于那些仍然感兴趣的人,mongo_db mongoose (@robertklep) 有虚拟字段,可以用作临时数据字段,数据库中不存在

GameSchema.virtual('likes_count').get(function () {
  return this.likes.length;
});
Run Code Online (Sandbox Code Playgroud)

请注意,您的模型必须具有这样的虚拟权限,以便您可以在控制器中使用它

var UserSchema = new Schema({
    username: {
        type: String
    }
}, {
    toObject: { virtuals: true },
    toJSON: { virtuals: true }
});
Run Code Online (Sandbox Code Playgroud)