MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Mongoose:come impostare un campo dello schema come ID?

Dato che stai usando Mongoose, un'opzione è usare la stringa email come _id campo e quindi aggiungi un campo virtuale denominato email che restituisce il _id per ripulire il codice che utilizza l'e-mail.

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

Si noti che un campo virtuale non è incluso per impostazione predefinita durante la conversione di un documento Mongoose in un semplice oggetto JS o in una stringa JSON. Per includerlo devi impostare il virtuals: true opzione in toObject() o toJSON() chiama:

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