MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongoose:como definir um campo de esquema para ser o ID?


Como você está usando o Mongoose, uma opção é usar a string de email como _id campo e adicione um campo virtual chamado email que retorna o _id para limpar o código que usa o 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);
});

Observe que um campo virtual não é incluído por padrão ao converter um documento do Mongoose em um objeto JS simples ou string JSON. Para incluí-lo, você deve definir o virtuals: true opção no toObject() ou toJSON() ligar:
var obj = doc.toObject({ virtuals: true });
var json = doc.toJSON({ virtuals: true });