簡體   English   中英

在貓鼬'init'上填充的虛擬方法

[英]Virtual methods to populate on mongoose 'init'

我正在尋找一種方法來填充虛擬(或類似的東西)到貓鼬模型。

我有一個我想擁有非持久屬性的模型。

我試圖在模型初始化上具有幫助指針(例如“ isFavourited:true”)的能力,而不是循環遍歷結果並修飾這些值。

干杯

找到了答案

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

從finds返回時,將在對象上渲染虛擬對象

虛擬機一定會為您開箱即用:

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');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM