Node.js 在mongoose上填充的虚拟方法';初始';
我正在寻找一种方法来填充mongoose模型的虚拟(或类似的东西) 我有一个模型,我想有非持久性的属性 我正在尝试在modelinit上使用诸如“isfavorited:true”之类的帮助指针,而不是在结果中循环并修饰这些值 欢呼声找到了答案 set(“toObject”,{virtuals:true}); set(“toJSON”,{virtuals:true})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
当从查找返回时,将在对象上呈现虚拟体。虚拟体肯定会为您提供现成的:
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您的回答帮助我找到了正确的解决方案,使用了一个异步模式扩展插件,该插件与您上面发布的虚拟设置相同。非常感谢。