วิธีการสร้างและใช้ Enum ในพังพอน


92

ฉันพยายามสร้างและใช้enumประเภทหนึ่งในพังพอน ฉันตรวจสอบแล้ว แต่ไม่ได้ผลลัพธ์ที่ถูกต้อง ฉันใช้enumในโปรแกรมของฉันดังนี้:

สคีมาของฉันคือ:

var RequirementSchema = new mongooseSchema({
   status: {
        type: String,
        enum : ['NEW,'STATUS'],
        default: 'NEW'
    },
})

แต่ฉันสับสนเล็กน้อยตรงนี้ฉันจะใส่ค่าของการenumชอบเข้าไปJava NEW("new")ได้อย่างไร ฉันจะบันทึกenumข้อมูลในฐานข้อมูลตามค่าที่แจกแจงได้อย่างไร ฉันใช้มันในโหนดด่วน js.

คำตอบ:


143

enums ที่นี่เป็นวัตถุสตริงโดยทั่วไป เปลี่ยนบรรทัด enum เป็นenum: ['NEW', 'STATUS']แทน คุณพิมพ์ผิดที่นั่นด้วยเครื่องหมายคำพูดของคุณ


คุณเชื่อมโยงสิ่งนี้กับตารางผู้ใช้อย่างไร ของฉันไม่ทำงาน ตารางผู้ใช้ของฉันฉันแทรกบทบาทนี้ไว้: {type: mongoose.Schema.Types.ObjectId, ref: 'role',},
Jm Macatangay

61

จากเอกสาร

พังพอนมีตัวตรวจสอบความถูกต้องในตัวหลายตัว สตริงมีenumเป็นหนึ่งในตัวตรวจสอบความถูกต้อง ดังนั้น enum จึงสร้างตัวตรวจสอบความถูกต้องและตรวจสอบว่ามีการกำหนดค่าในอาร์เรย์หรือไม่ เช่น:

var userSchema = new mongooseSchema({
   userType: {
        type: String,
        enum : ['user','admin'],
        default: 'user'
    },
})


ขอบคุณที่ใช้งานได้สำหรับฉันในการจัดเก็บ userType เริ่มต้น จะเปลี่ยน userType เป็น amdin จาก js ได้อย่างไร
Qui-Gon Jinn

คุณเชื่อมโยงสิ่งนี้กับตารางผู้ใช้อย่างไร ของฉันไม่ทำงาน ตารางผู้ใช้ของฉันฉันแทรกบทบาทนี้ไว้: {type: mongoose.Schema.Types.ObjectId, ref: 'role',},
Jm Macatangay

10

Enums เป็นอ็อบเจ็กต์ String ดังนั้น: enum :['a','b','c']หรืออาจเป็นเช่นนี้ const listOfEn = ['a','b','c']; => enum: listOfEn


1

สมมติว่าเรามี enum Roleกำหนดโดย

export enum Role {
  ADMIN = 'ADMIN',
  USER = 'USER'
}

เราสามารถใช้เป็นประเภทเช่น:

{
    type: String,
    enum: Role,
    default: Role.USER,
}

0

หากคุณต้องการใช้ TypeScript enumคุณสามารถใช้ในอินเทอร์เฟซได้IUserSchemaแต่ใน Schema คุณต้องใช้array(=> Object.values(userRole))

export enum userRole {
    admin = 'admin',
    user = 'user'
}

const UserSchema: Schema = new Schema({
    userType: { 
       type: String, 
       enum: Object.values(userRole), 
       default: userRole.user, required: true
    },
});

export interface IUserSchema extends Document {
    userType: userRole
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.