2012-11-25 23 views

cevap

2

Alanı, geleneksel alan yerine virtual alıcı olarak tanımlayın. Bu içinde bozulabilir mümkündür modeliniz örneğinin özel _doc üyesi erişerek

var schema = new Schema({ 
    city: String, 
    state: String 
}); 

schema.virtual('pop').get(function() { 
    return this._doc.pop; 
}); 

:

Örneğin

, sen Gelincik üzerinden erişilebilir salt okunur koleksiyonunuzun pop alanını yapmak istedim demek Gelecek, ama şimdi test ettim bu iyi çalıştı.

+0

bu nasıl oluyor? Sanallar ısrar etmiyor, değil mi? – sidgate

+1

@sidgate Bu, şemada tanımlı olmayan, ancak temel belgelerinde bulunan bir alanı açığa çıkarmak için kullanılan eski bir yanıttır. Yani, sanalların ısrar etmemesi haklısın, ama 'pop 'alanı zaten orada olduğundan, ham belge (belgesiz)' _doc' alanı aracılığıyla kullanılabilir çünkü çalışır. – JohnnyHK

11

Alternatif sen hiçbir zaman değiştirilemez varsayılan bir değer belirlemek istiyorsanız:

var schema = new Schema({ 
    securedField: { 
    type: String, 
    default: 'Forever', 
    set: function (val) { return this.securedField; } 
});