sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB:salida 'id' en lugar de '_id'

Dado que está usando Mongoose, puede usar 'virtuales', que son esencialmente campos falsos que crea Mongoose. No se almacenan en la base de datos, solo se completan en tiempo de ejecución:

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

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

Cada vez que se llame a toJSON en el modelo que crea a partir de este esquema, incluirá un campo 'id' que coincida con el campo _id que genera Mongo. Del mismo modo, puede configurar el comportamiento de toObject de la misma manera.

Ver:

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

Puede abstraer esto en un BaseSchema todos sus modelos y luego extender/invocar para mantener la lógica en un solo lugar. Escribí lo anterior mientras creaba una aplicación Ember/Node/Mongoose, ya que Ember realmente prefiere tener un campo 'id' para trabajar.