2012-07-19 12 views
26

widziałem w innej odpowiedzi, że w celu uwzględnienia pola wirtualne trzeba zrobić jak https://groups.google.com/forum/?fromgroups#!topic/mongoose-orm/HjrPAP_WXYsMongoose wirtualne pola zawarte w toJSON domyślnie: schemaOptions.toJSON.virtuals = true; nadal nie obejmuje wirtualne pola domyślnie

var schemaOptions = { 
    toJSON: { 
    virtuals: true 
    } 
}; 

które robiłem;

Teraz w schemacie:

new Schema({...}, schemaOptions); 

Ale nadal tak, dane nie obejmują wirtualny ..: s

Ale jak to działa:

var docsCallback = function(err, docs){ 
    var i = docs.length; 
    var nDocs = []; 
    while(i--){ 
     nDocs[i] = docs[i].toObject({virtuals: true}); 
    } 
    done(nDocs); 
} 
+0

Does toObject automatycznie '' refs' .populate' każdy znalazł w obiekcie? Powiedzmy obiekt 'Post', który ma w sobie wartość' User'. @ Totty.js –

Odpowiedz

41

prostu próbowałem :

var schemaOptions = { 
    toObject: { 
     virtuals: true 
    } 
    }; 

oraz pracował! ;)

Teraz domyślnie używać:

var schemaOptions = { 
    toObject: { 
     virtuals: true 
    } 
    ,toJSON: { 
     virtuals: true 
    } 
    }; 
+0

po prostu zaakceptuj własną odpowiedź, więc pytanie jest wyświetlane jako odpowiedź na liście pytań –

+0

dziękuję za zapamiętanie (: –

9

Można to zrobić w ten sposób, a także:

docs.set('toJSON', { virtuals: true }); 
+2

dzięki za odpowiedź –

Powiązane problemy