sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB:výstup 'id' místo '_id'

Vzhledem k tomu, že používáte Mongoose, můžete použít 'virtuály', což jsou v podstatě falešná pole, která Mongoose vytváří. Nejsou uloženy v DB, pouze se zaplní za běhu:

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

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

Kdykoli se na modelu, který vytvoříte z tohoto schématu, zavolá toJSON, bude obsahovat pole 'id', které odpovídá poli _id, které Mongo vygeneruje. Podobně můžete stejným způsobem nastavit chování pro toObject.

Viz:

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

Můžete to abstrahovat do BaseSchema všechny své modely a poté rozšířit/vyvolat, abyste udrželi logiku na jednom místě. Výše jsem napsal při vytváření aplikace Ember/Node/Mongoose, protože Ember opravdu preferuje mít pole 'id' pro práci.



  1. Podpora transakcí v MongoDB

  2. pomocí $ as $match v mongodb

  3. Odstraňování problémů

  4. Zamykání a Redis