MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose:Wie setze ich ein Schemafeld als ID?

Da Sie Mongoose verwenden, besteht eine Möglichkeit darin, die E-Mail-Zeichenfolge als _id zu verwenden Feld und fügen Sie dann ein virtuelles Feld hinzu namens email das gibt die _id zurück um den Code zu bereinigen, der die E-Mail verwendet.

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

Beachten Sie, dass ein virtuelles Feld nicht standardmäßig enthalten ist, wenn ein Mongoose-Dokument in ein einfaches JS-Objekt oder eine JSON-Zeichenfolge konvertiert wird. Um es einzuschließen, müssen Sie die virtuals: true setzen Option in toObject() oder toJSON() Aufruf:

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