sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB:mata ut 'id' istället för '_id'

Med tanke på att du använder Mongoose kan du använda "virtualer", som i huvudsak är falska fält som Mongoose skapar. De lagras inte i databasen, de fylls bara i vid körning:

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

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

Varje gång toJSON anropas på modellen du skapar från detta schema, kommer det att inkludera ett 'id'-fält som matchar _id-fältet som Mongo genererar. På samma sätt kan du ställa in beteendet för toObject på samma sätt.

Se:

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

Du kan abstrahera detta till ett BaseSchema alla dina modeller och sedan utöka/anropa för att hålla logiken på ett ställe. Jag skrev ovanstående när jag skapade en Ember/Node/Mongoose-app, eftersom Ember verkligen föredrar att ha ett "id"-fält att arbeta med.



  1. Hur fyller man i kapslade enheter i mongoose?

  2. anpassad redis-klient kompilering misslyckas

  3. hur kan man lagra en Json i redis med hashmap(HSET)

  4. MongoDB $acos