node.js - 如何使用虚拟方法从 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.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

我访问属性枚举的方法是否肮脏或不正确?有没有更简洁的方法可以写这个?

最佳答案

这是干净且简单的方法。

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

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

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

关于node.js - 如何使用虚拟方法从 Mongoose 模式获取枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37283471/

相关文章:

javascript - 无法分配给的只读属性 '_id'

delphi - TValue.AsType <T>与Delphi中的枚举类型

javascript - 如何将 JSON 数据从客户端发送到 Node.js 服务器。

javascript - 写入结束后,nodejs gridFS writestream报错

jquery - 添加到列表并通过 html 表单和 jquery 提交的问题

node.js - Nodemon index.js

typescript - 将字符串枚举类型转换为枚举值的联合类型

iphone - typedef 枚举 : which classes have access to it

javascript - Node js multer 文件上传不起作用。 req.file 和 req.files 始终未定义

node.js - 错误号 : 34, 代码: 'ENOENT'