如何使用虚方法从mongoose模式获取枚举值?

时间:2016-05-17 18:12:51

标签: node.js mongodb enums mongoose

我在同一架构上使用虚拟方法从我的Mongoose架构中获取枚举值时遇到了困难。

我试图在架构中访问的属性定义如下:

, roles: {
    type: [{
        type: String
        , enum: ['user', 'admin']
    }]
    , default: ['user']
}

以下是我用来获取枚举值的虚拟方法:

// Returns an array of all possible role enum values
UserSchema.virtual('possibleRoles').get(function() {
    return this.schema.path('roles').caster.enumValues;
});

这是有效的,但我在网上找到的其他例子以不同的方式进行了讨论。例如:Access the list of valid values for an Enum field in a Mongoose.js Schema

我访问属性上的枚举的方法是脏还是不正确?有没有更清洁的方式我可以写这个?

2 个答案:

答案 0 :(得分:3)

这是简洁明了的方法。

var possibleRoles = ['user', 'admin'];

var UserSchema = new Schema({
    roles: {
        type: [{type: String, enum: possibleRoles}],
        default: ['user']
    }
});

UserSchema.virtual('possibleRoles').get(function () {
    return possibleRoles;
});

答案 1 :(得分:0)

删除施法者部分,我不知道为什么会这样: return this.schema.path('roles').enumValues; 这应该没有任何其他问题