b我声明要作为其架构查询结果的一部分显示的虚拟机,但是在对对象执行console.log时未显示该虚拟机。这是模式:

var schema = new mongoose.Schema(
{
    Name: { type: String }
},
{
    toObject: { virtuals: true }
});

schema.virtual("Greet").get(function()
{
    return "My name is " + this.Name;
});

那个toObject是否不应该将virtual设置为任何查询结果的属性?它没有,schema.set(“toObject”,{virtuals:true})也没有。我这样做对吗?

最佳答案

因为您在JSON.stringify调用中使用console.log,所以该调用模型实例上的toJSON方法,而不是toObject

因此,您可以在通话中省略JSON.stringify:

console.log(results[0]);

或在架构上设置 toJSON 选项,就像您当前正在设置toObject选项一样。
...
{
    toObject: { virtuals: true },
    toJSON: { virtuals: true }
});

关于virtual - 无法让Mongoose虚拟机成为结果对象的一部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13133911/

10-09 13:41