3

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

有没有办法select:false从虚拟属性获取器访问该字段?

4

1 回答 1

1

目前,只有select: false在查询时强制选择字段,才能访问字段:

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

注意:不要lean: true在您还想要虚拟对象的查询中使用(这可能会帮助一些来到这里的人)。

此 github 问题中的更多信息/更新。

于 2016-08-11T12:23:30.647 回答