How to Create and Use Enum in Mongoose [Closed]
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...
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.
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.
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:
const userSchema = new mongoose.Schema({
userType: {
type: String,
enum : ['user','admin'],
default: 'user'
},
})
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,
}
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
}
});
Enums is String objects so for example : enum :['a','b','c'] or probably like this
const listOfEn = ['a','b','c'];
=> enum: listOfEn
In a Schema design, you can easily add an enum value by using enum keyword like this: -
catagory: {
type: String,
enum: ['freeToPlay','earlyAccess','action','adventure','casual','indie','massivelyMultiplayer','racing','simulation','RPG','sports','statigy'],
default: 'freeToPlay'
},