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

MongoDB:'id' statt '_id' ausgeben

Vorausgesetzt, Sie verwenden Mongoose, können Sie „virtuelle Felder“ verwenden, bei denen es sich im Wesentlichen um gefälschte Felder handelt, die Mongoose erstellt. Sie werden nicht in der DB gespeichert, sie werden nur zur Laufzeit gefüllt:

// Duplicate the ID field.
Schema.virtual('id').get(function(){
    return this._id.toHexString();
});

// Ensure virtual fields are serialised.
Schema.set('toJSON', {
    virtuals: true
});

Jedes Mal, wenn toJSON für das Modell aufgerufen wird, das Sie aus diesem Schema erstellen, enthält es ein „id“-Feld, das mit dem von Mongo generierten _id-Feld übereinstimmt. Ebenso können Sie das Verhalten für toObject auf die gleiche Weise einstellen.

Siehe:

  • http://mongoosejs.com/docs/api.html
  • http://mongoosejs.com/docs/guide.html#toJSON
  • http://mongoosejs.com/docs/guide.html#toObject

Sie können dies in einem BaseSchema alle Ihre Modelle abstrahieren und dann erweitern/aufrufen, um die Logik an einem Ort zu halten. Ich habe das Obige geschrieben, während ich eine Ember/Node/Mongoose-App erstellt habe, da Ember es wirklich bevorzugt, ein 'id'-Feld zu haben, mit dem es arbeiten kann.