Protéger un champ MongoDB avec Mongoose

Emmanuel Gautier / September 17, 2014

2 min read

Comme pour toute application, nous ne voulons pas que certains champs de nos bases soient visibles aux yeux de tous. Mongoose, ODM écrit en Javascript pour requêter les bases NoSQL MongoDB, permet simplement de mettre en place une protection sur certains champs que nous voulons laisser cachés.

Mongoose rend possible, au moment de la création du schéma, d'établir une protection sur un ou plusieurs champs de votre schéma. Cette protection intervient lorsque vous requêtez celui-ci, le champ en question n’apparaît pas dans le résultat.

Voici la manière de faire pour créer un Schéma avec un champ protégé :

var UserSchema = new Schema({
  username: { type: String, index: { unique: true } },
  mail: { type: String, index: { unique: true } },
  password: { type: String, select: false },
  createdAt: { type: Date, default: Date.now },
})

mongoose.model('User', UserSchema)

Vérifions maintenant que le champs est bien protégé :

var User = mongoose.model('User')

User.findOne({ username: username }, function (err, user) {
  if (user) {
    // User
  }
})

Si vous désirez à un moment récupérer le contenu de ce champ, il vous suffit d'utiliser la fonction select comme suivant :

var User = mongoose.model('User')

User.findOne({ username: username })
  .select('+password')
  .exec(function (err, user) {
    if (user) {
      // User
    }
  })

Consulting

Si vous recherchez des solutions à un problème ou avez besoin de conseils, je suis là pour vous aider ! N'hésitez pas à réserver un call avec moi pour une session de consulting personnalisée. Discutons de votre situation et trouvons ensemble la meilleure solution à implémenter.

Partager cet article
Suivre le flux RSS

Inscrivez-vous à la Newsletter

Rejoignez nous en vous abonnant à ma newsletter !