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?
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 }
});