我正在声明一个虚拟的我想要作为其模式查询结果的一部分出现,但是当我在对象上执行console.log时它并没有显示出来.这是架构:
var schema = new mongoose.Schema(
{
Name: { type: String }
},
{
toObject: { virtuals: true }
});
schema.virtual("Greet").get(function()
{
return "My name is " + this.Name;
});
Run Code Online (Sandbox Code Playgroud)
那个toObject不应该将虚拟设置为任何查询结果的属性吗?它没有,schema.set也没有("toObject",{virtuals:true}).我这样做了吗?
Joh*_*yHK 66
因为您JSON.stringify在console.log调用中使用,所以调用toJSON模型实例上的方法,而不是toObject.
所以要么省略JSON.stringify你的电话:
console.log(results[0]);
Run Code Online (Sandbox Code Playgroud)
或者toJSON在模式上设置选项,就像您当前正在设置toObject选项一样.
...
{
toObject: { virtuals: true },
toJSON: { virtuals: true }
});
Run Code Online (Sandbox Code Playgroud)