我在同一架构上使用虚拟方法从我的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
我访问属性上的枚举的方法是脏还是不正确?有没有更清洁的方式我可以写这个?
答案 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;
这应该没有任何其他问题