2014-07-24 20 views
18

ho uno schema utente con mangusta in nodejs come questoMongoose schema campi opzionali

userschema = mongoose.Schema({ 
    org: String, 
    username: String, 
    fullname: String, 
    password: String, 
    email: String 
}); 

tranne a volte ho bisogno di aggiungere un po 'più campi.

La domanda principale è: posso avere campi facoltativi in ​​uno schema monogoose?

risposta

31

Tutti i campi in uno schema di mangusta sono facoltativi per impostazione predefinita (oltre allo _id, ovviamente).

Un campo è richiesto solo se si aggiunge required: true alla sua definizione.

Definire quindi lo schema come superset di tutti i campi possibili, aggiungendo required: true ai campi richiesti.

+2

E 'possibile impostare 'richiesto: true' su un paio di campi se e solo se un terzo campo è' richiesto: true'? Il caso d'uso per questo è abbastanza comune ... ad es. 'hourlyRate' e' endDate' sono richiesti solo se 'isContractor' è un campo obbligatorio. –

19

Oltre a opzionale (default) e richiesto, un campo può anche essere condizionatamente necessario, sulla base di uno o più degli altri campi.

Ad esempio, richiedere una password solo se esiste e-mail:

var userschema = mongoose.Schema({ 
    org: String, 
    username: String, 
    fullname: String, 
    password: { 
     type: String, 
     required: function(){ 
      return this.email? true : false 
     } 
    }, 
    email: String 
}); 
Problemi correlati