Vì bạn đang sử dụng Mongoose, một tùy chọn là sử dụng chuỗi email làm _id
rồi thêm trường trường ảo
có tên email
trả về _id
để xóa mã sử dụng 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);
});
Lưu ý rằng trường ảo không được bao gồm theo mặc định khi chuyển đổi tài liệu Mongoose thành đối tượng JS thuần túy hoặc chuỗi JSON. Để bao gồm nó, bạn phải đặt virtuals: true
trong tùy chọn toObject()
hoặc toJSON()
gọi:
var obj = doc.toObject({ virtuals: true });
var json = doc.toJSON({ virtuals: true });