How to Create and Use Enum in Mongoose
I am trying to create and use an enum
type in Mongoose. I checked it out, but I'm not getting the proper result. I'm using enum
in my program as follows:
My schema is:
var RequirementSchema = new mongooseSchema({
status: {
type: String,
enum : ['NEW','STATUS'],
default: 'NEW'
},
})
But I am little bit confused here, how can I put the value of an enum
like in Java NEW("new")
. How can I save an enum
in to the database according to it's enumerable values. I am using it in express node.js.
Thanks
Solution 1:
The enums here are basically String objects. Change the enum line to enum: ['NEW', 'STATUS']
instead. You have a typo there with your quotation marks.
Solution 2:
From the docs
Mongoose has several inbuilt validators. Strings have enum as one of the validators. So enum creates a validator and checks if the value is given in an array. E.g:
var userSchema = new mongooseSchema({
userType: {
type: String,
enum : ['user','admin'],
default: 'user'
},
})
Solution 3:
Let say we have a enum Role
defined by
export enum Role {
ADMIN = 'ADMIN',
USER = 'USER'
}
We can use it as type like:
{
type: String,
enum: Role,
default: Role.USER,
}
Solution 4:
If you would like to use TypeScript enum
you can use it in interface IUserSchema
but in Schema you have to use array
(Object.values(userRole)
).
enum userRole {
admin = 'admin',
user = 'user'
}
interface IUserSchema extends Document {
userType: userRole
}
const UserSchema: Schema = new Schema({
userType: {
type: String,
enum: Object.values(userRole),
default: userRole.user,
required: true
}
});