sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongoose:¿cómo configurar un campo de esquema para que sea el ID?

Como está usando Mongoose, una opción es usar la cadena de correo electrónico como _id y luego agregue un campo virtual llamado email que devuelve el _id para limpiar el código que utiliza el correo electrónico.

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);
});

Tenga en cuenta que un campo virtual no se incluye de forma predeterminada al convertir un documento de Mongoose en un objeto JS simple o una cadena JSON. Para incluirlo, debe configurar virtuals: true opción en toObject() o toJSON() llamar:

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