2012-07-19 6 views
26

tôi thấy trong câu trả lời khác rằng để bao gồm các lĩnh vực ảo bạn phải làm như https://groups.google.com/forum/?fromgroups#!topic/mongoose-orm/HjrPAP_WXYsCác trường ảo Mongoose được bao gồm trong toJSON theo mặc định: schemaOptions.toJSON.virtuals = true; vẫn không bao gồm các lĩnh vực ảo theo mặc định

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

mà tôi đã thực hiện;

Bây giờ trong Schema:

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

Nhưng vẫn như vậy, các dữ liệu không bao gồm ảo ..: s

Nhưng giống như các công trình này:

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

Liệu toObject tự động '.populate' bất kỳ 'refs' tìm thấy trong các đối tượng? Giả sử một đối tượng 'Post' có một' User' ref trong nó. @ Totty.js –

Trả lời

41

Chỉ cần cố gắng :

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

và đã làm việc! ;)

Bây giờ theo mặc định tôi sử dụng:

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

chỉ chấp nhận câu trả lời của riêng bạn để câu hỏi hiển thị như được trả lời trong danh sách câu hỏi –

+0

cảm ơn bạn đã nhớ (: –

9

Bạn có thể làm theo cách này cũng như:

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

cảm ơn câu trả lời của bạn –