Mongoose – Can’t get Mongoose virtuals to be part of the result object

mongoose, virtual

bI'm declaring a virtual that I want to appear as part of the results of its schema's queries, but it's not showing up when I do a console.log on the object. Here's the schema:

var schema = new mongoose.Schema({    Name: { type: String }},{    toObject: { virtuals: true }});schema.virtual("Greet").get(function(){    return "My name is " + this.Name;});

Should that toObject not set the virtual as a property of the results of any queries? It does not, nor does schema.set("toObject", { virtuals: true }). Am I doing this right?

Best Solution

Because you're using JSON.stringify in your console.log call, that invokes the toJSON method on the model instance, not toObject.

So either omit the JSON.stringify in your call:

console.log(results[0]);

Or set the toJSON option on the schema like you're currently setting the toObject option.

...{    toObject: { virtuals: true },    toJSON: { virtuals: true }});