虚拟场和真实场

时间:2015-08-28 04:11:53

标签: mongodb mongoose keystonejs

是否可以使虚拟字段也是模型中的字段?

var exampleSchema = new Schema({
      name : {type: String, required: true}
      slug:: {type: String}
});


exampleSchema.virtual('slug').get(function() {

    if(this.slug && this.slug.length){
        return this.slug;
    }

    return this.name.toLowerCase().replace(/ /g, '');
});

如果设置了slug,我想要返回slug。如果没有,我想从名称返回一个计算值。

我不想使用静态方法,它在拉取记录时需要成为结果的一部分。

1 个答案:

答案 0 :(得分:0)

您可以创建自定义getter函数并返回值(如果存在)或计算值(如果它不存在)。

var exampleSchema = new Schema({
    name: {type: String, required: true}
    slug: {
        type: String,
        get: function(value) {
            if (value) {
                return value;
            } else {
                return this.name.toLowerCase().replace(/ /g, '');
            }
        }
    }
});