web-dev-qa-db-fra.com

Champs facultatifs du schéma de mangouste

J'ai un schéma d'utilisateur avec mangouste dans nodejs comme celui-ci

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

Sauf que parfois j'ai besoin d'ajouter quelques champs supplémentaires.

La question principale est: Puis-je avoir des champs optionnels dans un schéma monogoose?

30
HarveyBrCo

Tous les champs d'un schéma mangouste sont facultatifs par défaut (outre _id, bien sûr).

Un champ n'est requis que si vous ajoutez required: true à sa définition.

Définissez donc votre schéma comme le surensemble de tous les champs possibles, en ajoutant required: true aux champs obligatoires.

35
JohnnyHK

En plus de facultatif (par défaut) et obligatoire, un champ peut également être requis conditionnellement, basé sur un ou plusieurs des autres champs.

Par exemple, exigez un mot de passe uniquement s'il existe un e-mail:

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