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

时间:2013-09-28 15:09:53

标签: javascript node.js mongodb mongoose

我正在使用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访问该字段?

1 个答案:

答案 0 :(得分:1)

目前,只有在您进行查询时强行选择select: false字段,才能访问Article.findById(articleId, '+Revisions'); 字段:

lean: true

注意:不要将Format-*用于您也想要虚拟的查询(这可能会帮助一些人来到这里)。

this github issue中的更多信息/更新。