sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose:hur ställer man in ett schemafält som ID?

Eftersom du använder Mongoose är ett alternativ att använda e-poststrängen som _id fält och lägg sedan till ett virtuella fält heter email som returnerar _id för att rensa upp koden som använder e-postmeddelandet.

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

Observera att ett virtuellt fält inte ingår som standard när ett Mongoose-dokument konverteras till ett vanligt JS-objekt eller JSON-sträng. För att inkludera det måste du ställa in virtuals: true alternativet i toObject() eller toJSON() ring:

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



  1. Använda flera Mongodb-databaser med Meteor.js

  2. Hur kan jag använda reguljära uttryck med Doctrine's Mongodb ODM?

  3. Har Pymongo inbyggda valideringsregler?

  4. Indexering av array/subobjekt i mongoDB orsakar duplicate key error