Node.js 如何使用虚拟方法从mongoose模式获取枚举值?
我很难在同一模式上使用虚拟方法从Mongoose模式中获取枚举值 我试图在架构中访问的属性定义如下:Node.js 如何使用虚拟方法从mongoose模式获取枚举值?,node.js,mongodb,enums,mongoose,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.virt
, 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;
});
这是可行的,但我在网上找到的其他例子却以不同的方式进行了讨论。这方面的一个例子如下:
我访问属性上枚举的方法是否脏或不正确?有没有一种更干净的方法可以让我写这篇文章?这是一种干净而简单的方法
var possibleRoles = ['user', 'admin'];
var UserSchema = new Schema({
roles: {
type: [{type: String, enum: possibleRoles}],
default: ['user']
}
});
UserSchema.virtual('possibleRoles').get(function () {
return possibleRoles;
});
这是一种干净简单的方法
var possibleRoles = ['user', 'admin'];
var UserSchema = new Schema({
roles: {
type: [{type: String, enum: possibleRoles}],
default: ['user']
}
});
UserSchema.virtual('possibleRoles').get(function () {
return possibleRoles;
});
拆下脚轮部分,我不知道为什么会出现:
返回此.schema.path('roles').enumValues;
这应该可以在没有任何其他问题的情况下工作拆下主销后倾角部件,我不知道为什么会出现这种情况:
返回此.schema.path('roles').enumValues;
这应该没有任何其他问题这是最干净的方法。但是,如果我想将数组保持在模式定义内,那么我访问它的方式是否正确?谢谢。您可以在角色类型为字符串时访问,并为其设置枚举值。然后在虚拟方法中返回这个.schema.path('roles').enumValues;这是最干净的方法。但是,如果我想将数组保持在模式定义内,那么我访问它的方式是否正确?谢谢。您可以在角色类型为字符串时访问,并为其设置枚举值。然后在虚拟方法中返回这个.schema.path('roles').enumValues;