如何使用select:false为字段创build虚拟属性

我正在使用select:false来防止显示大量的嵌套数据。

 var Revision = { Timestamp : { type : Date, default: Date.now }, }; var Article = new Schema({ Title: { type: String, required: true }, Revisions: {type: [Revision], select:false} },schemaOptions); 

我想用虚拟属性来显示它的一小部分。

 Article .virtual('LastRevision') .get(function(){ var revs = this.Revisions; //undefined unless select:false is commented out if ( revs && revs.length>0) { return revs[revs.length-1]; } }); 

有没有办法从虚拟属性getter中select:false来访问字段?

目前,如果您在进行查询时强制select它们,则只能访问select: false字段:

 Article.findById(articleId, '+Revisions'); 

注意:不要使用lean: true的查询,你也想要虚拟(这可能会帮助一些人来到这里)。

更多信息/ 这个github问题的更新。