MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB:saída 'id' em vez de '_id'


Dado que você está usando o Mongoose, você pode usar 'virtuais', que são essencialmente campos falsos que o Mongoose cria. Eles não são armazenados no banco de dados, apenas são preenchidos em tempo de execução:
// Duplicate the ID field.
Schema.virtual('id').get(function(){
    return this._id.toHexString();
});

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

Sempre que toJSON for chamado no modelo que você criar a partir deste esquema, ele incluirá um campo 'id' que corresponde ao campo _id gerado pelo Mongo. Da mesma forma, você pode definir o comportamento de toObject da mesma maneira.

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

Você pode abstrair isso em um BaseSchema todos os seus modelos e depois estender/invocar para manter a lógica em um só lugar. Eu escrevi o acima enquanto criava um aplicativo Ember/Node/Mongoose, já que Ember realmente prefere ter um campo 'id' para trabalhar.