MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB:output 'id' invece di '_id'

Dato che stai usando Mongoose, puoi usare "virtuali", che sono essenzialmente campi falsi creati da Mongoose. Non vengono archiviati nel database, vengono semplicemente popolati in fase di esecuzione:

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

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

Ogni volta che toJSON viene chiamato sul modello che crei da questo schema, includerà un campo 'id' che corrisponde al campo _id generato da Mongo. Allo stesso modo puoi impostare il comportamento per toObject allo stesso modo.

Vedi:

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

Puoi astrarre questo in un BaseSchema tutti i tuoi modelli, quindi estendere/richiamare per mantenere la logica in un unico posto. Ho scritto quanto sopra durante la creazione di un'app Ember/Node/Mongoose, poiché Ember preferisce davvero avere un campo "id" con cui lavorare.