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