问题
I saw in another answer that in order to include the virtual fields you must do like https://groups.google.com/forum/?fromgroups#!topic/mongoose-orm/HjrPAP_WXYs
var schemaOptions = {
toJSON: {
virtuals: true
}
};
which I've done;
Now in the Schema:
new Schema({...}, schemaOptions);
But still so, the data doesn't include the virtual.. :s
But like this works:
var docsCallback = function(err, docs){
var i = docs.length;
var nDocs = [];
while(i--){
nDocs[i] = docs[i].toObject({virtuals: true});
}
done(nDocs);
}
回答1:
Just tried:
var schemaOptions = {
toObject: {
virtuals: true
}
};
and worked! ;)
Now by default I use:
var schemaOptions = {
toObject: {
virtuals: true
}
,toJSON: {
virtuals: true
}
};
回答2:
You can do this way as well:
docs.set('toJSON', { virtuals: true });
回答3:
For me it worked only after adding getters: true
to schema options, as mentioned in mongoose docs, i.e.
var schemaOptions = {
toObject: {
getters: true
},
toJSON: {
getters: true
}
};
来源:https://stackoverflow.com/questions/11557804/mongoose-virtual-fields-included-in-tojson-by-default-schemaoptions-tojson-virt