Ответ 1
Поскольку вы используете Mongoose, одним из вариантов является использование строки электронной почты в качестве поля _id
, а затем добавление виртуального поля с именем email
, которое возвращает _id
, чтобы очистить код, использующий электронную почту.
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);
});
Обратите внимание, что виртуальное поле по умолчанию не включается при преобразовании документа Mongoose в простой объект JS или строку JSON. Чтобы включить его, вы должны установить опцию virtuals: true
в toObject()
или toJSON()
var obj = doc.toObject({ virtuals: true });
var json = doc.toJSON({ virtuals: true });