sql >> Database >  >> NoSQL >> MongoDB

Mongoose:hoe stel je een schemaveld in als ID?

Aangezien je Mongoose gebruikt, is een optie om de e-mailstring te gebruiken als de _id veld en voeg vervolgens een virtueel veld toe met de naam email die de _id . retourneert om de code op te schonen die de e-mail gebruikt.

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

Houd er rekening mee dat een virtueel veld niet standaard wordt opgenomen bij het converteren van een Mongoose-document naar een gewoon JS-object of JSON-tekenreeks. Om het op te nemen, moet je de virtuals: true . instellen optie in de toObject() of toJSON() bel:

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



  1. MongoDB full-text zoekindex:fout:te veel tekstindex voor, waarom?

  2. Ontcijfer een fout bij het verbinden met een mongo-instantie die wordt gehost op <project>.meteor.com

  3. Gegevens invoegen in MongoDB - geen fout, geen invoeging

  4. Hoe productgroepsgewijs tellen met veldnaam in Monogodb?