2012-07-19 83 views
26

我在另外一個答案看到,在以包含虛擬領域必須做到像https://groups.google.com/forum/?fromgroups#!topic/mongoose-orm/HjrPAP_WXYs默認情況下,toJSON中包含Mongoose虛擬字段:schemaOptions.toJSON.virtuals = true;還不包括默認的虛擬域

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

,我已經做了;

現在的架構:

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

卻還是那麼,該數據不包括虛擬..:■

但是像這樣工作的:

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

不toObject自動'.populate'任何'在對象refs'發現了什麼?假設一個'Post'對象有一個'User'參數。 @ Totty.js – 2015-10-14 17:27:05

回答

41

剛試過:

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

和成功了! ;)

現在,在默認情況下使用:

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

只是接受你自己的回答,所以問題顯示在問題列表中回答 – 2012-12-22 23:02:52

+0

感謝你記住(: – 2012-12-22 23:03:34

9

你可以做到這一點的方式,以及:

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

感謝您的回答 – 2013-02-08 09:05:10