Node.js 在mongoose上填充的虚拟方法';初始';

Node.js 在mongoose上填充的虚拟方法';初始';,node.js,express,mongoose,mongoose-schema,Node.js,Express,Mongoose,Mongoose Schema,我正在寻找一种方法来填充mongoose模型的虚拟(或类似的东西) 我有一个模型,我想有非持久性的属性 我正在尝试在modelinit上使用诸如“isfavorited:true”之类的帮助指针,而不是在结果中循环并修饰这些值 欢呼声找到了答案 set(“toObject”,{virtuals:true}); set(“toJSON”,{virtuals:true}) 当从查找返回时,将在对象上呈现虚拟体。虚拟体肯定会为您提供现成的: someSchema.virtual('isFavourit

我正在寻找一种方法来填充mongoose模型的虚拟(或类似的东西)

我有一个模型,我想有非持久性的属性

我正在尝试在modelinit上使用诸如“isfavorited:true”之类的帮助指针,而不是在结果中循环并修饰这些值

欢呼声找到了答案

set(“toObject”,{virtuals:true}); set(“toJSON”,{virtuals:true})


当从查找返回时,将在对象上呈现虚拟体。虚拟体肯定会为您提供现成的:

someSchema.virtual('isFavourited').get(function() {  
    return true
})
它将为您提供无法设置的临时isFavorited属性

您可能希望在模型上获得任意瞬态属性的插件如下所示:

function IHaveContext(schema, init={}) {
   schema.virtual('context')
        .get(function () {
            return this._context;
        })
        .set(function (item) {
            if (!this._context)
                this._context = init;
            this._context = Object.assign({}, this._context, item);
        });

}
然后将其应用于任何模型,可以选择设置默认值:

let Game = new Schema({ ... })
Game.plugin(IHaveContext, {'isFavourited': false})
现在您有了一个api,可以用任意属性装饰您的模型:

let item - new Game()
item.set('context', {'isFavourited': true});
item.get('context')('isFavourited');

啊,那是你的问题。我的误解。@RobertMoskal您的回答帮助我找到了正确的解决方案,使用了一个异步模式扩展插件,该插件与您上面发布的虚拟设置相同。非常感谢。