sql >> Database >  >> NoSQL >> MongoDB

MongoDB:output 'id' in plaats van '_id'

Aangezien je Mongoose gebruikt, kun je 'virtuals' gebruiken, dit zijn in wezen nepvelden die Mongoose maakt. Ze worden niet opgeslagen in de DB, ze worden gewoon ingevuld tijdens runtime:

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

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

Elke keer dat toJSON wordt aangeroepen in het model dat u op basis van dit schema maakt, bevat het een 'id'-veld dat overeenkomt met het _id-veld dat Mongo genereert. Op dezelfde manier kunt u het gedrag voor toObject op dezelfde manier instellen.

Zie:

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

Je kunt dit samenvatten in een BaseSchema en al je modellen uitbreiden/aanroepen om de logica op één plek te houden. Ik schreef het bovenstaande tijdens het maken van een Ember/Node/Mongoose-app, omdat Ember echt de voorkeur geeft aan een 'id'-veld om mee te werken.



  1. database converteren van mysql naar mongoDb

  2. Hoe weet ik het gegevenstype van de waarde van een bepaalde sleutel?

  3. Fout:queryTxt ETIMEOUT bij verbinding met MongoDb Atlas met behulp van mangoest

  4. 3 manieren om een ​​index te verbergen voor het queryplan in MongoDB