我正在寻找一种方法来将虚拟(或类似的东西)填充到猫鼬模型中。
我有一个模型,我希望有非持久性属性。
我试图在模型init上有帮助指针,例如'isFavourited:true',而不是循环遍历结果并装饰这些值。
干杯
答案 0 :(得分:1)
找到答案
Schema.set(" toObject",{virtuals:true}); Schema.set(" toJSON",{virtuals:true});
从find 返回时,将呈现对象上的虚拟对象
答案 1 :(得分:0)
Virtuals肯定会为您提供开箱即用的功能:
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');