如何使用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问题的更新。