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

MongoDB:output 'id' i stedet for '_id'

Givet du bruger Mongoose, kan du bruge 'virtuelle', som i det væsentlige er falske felter, som Mongoose opretter. De er ikke gemt i databasen, de bliver bare udfyldt under kørsel:

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

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

Hver gang toJSON kaldes på den model, du opretter fra dette skema, vil det inkludere et 'id'-felt, der matcher det _id-felt, som Mongo genererer. Ligeledes kan du indstille adfærden for toObject på samme måde.

Se:

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

Du kan abstrahere dette til et BaseSchema alle dine modeller og derefter udvide/kalde for at holde logikken på ét sted. Jeg skrev ovenstående, mens jeg oprettede en Ember/Node/Mongoose-app, da Ember virkelig foretrækker at have et 'id'-felt at arbejde med.



  1. Hvordan bruger jeg forbindelsespuljer korrekt i redis?

  2. Mongodb-forespørgsel baseret på element på specifik position i array

  3. Mislykket global initialisering:BadValue Ugyldig eller ingen bruger-lokalitet angivet. Sørg for, at miljøvariablerne LANG og/eller LC_* er indstillet korrekt

  4. Redis som Hibernate andet niveau cache