MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongoose :comment définir un champ de schéma comme ID ?

Puisque vous utilisez Mongoose, une option consiste à utiliser la chaîne de messagerie comme _id puis ajoutez un champ virtuel nommé email qui renvoie le _id pour nettoyer le code qui utilise l'email.

var userSchema = new Schema({
    _id: {type: String},
    passwordHash: {type: String},
    roles: {type: [String]}
});

userSchema.virtual('email').get(function() {
    return this._id;
});

var User = mongoose.model('User', userSchema);

User.findOne(function(err, doc) {
    console.log(doc.email);
});

Notez qu'un champ virtuel n'est pas inclus par défaut lors de la conversion d'un document Mongoose en un objet JS simple ou une chaîne JSON. Pour l'inclure, vous devez définir le virtuals: true option dans toObject() ou toJSON() appeler :

var obj = doc.toObject({ virtuals: true });
var json = doc.toJSON({ virtuals: true });