kwantec / invoicecontrol

Invoice Control Software (class project)
Other
3 stars 0 forks source link

Mongoose me crea un _id cuando creo un atributo del tipo ObjectId. #50

Open BuiRai opened 7 years ago

BuiRai commented 7 years ago

Ayuda

Modelo

Mi modelo es el siguiente:

'use strict';

/**
 * Module dependencies.
 */
var mongoose = require('mongoose'),
    Schema = mongoose.Schema;

/**
 * Group Schema
 */
var UserGroupSchema = new Schema({
    name: {
        type: String,
        default: 'name...',
        required: 'Please fill Group name',
        trim: true
    },
    description: {
        type: String,
        default: 'description...',
        required: 'Please fill Group description',
    },
    // ============================================
    // Este es el atributo al cuál mongoogose le crea un _id.
    permissions: [{
        module: {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'Module'
        },
        permission: {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'Permission'
        }
    }],
    // ============================================
    users: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User'
    }],
    created: {
        type: Date,
        default: Date.now
    }
});

mongoose.model('UserGroup', UserGroupSchema);

Respuesta de la API

Cuando ejecuto la consulta de la API me retorna lo siguiente: El atributo permission es un array, cada objeto dentro del array es una tupla, esta tupla contiene la información de un objeto Module - Permission. Mongoose me crea un _id a este objeto tupla.

{
  "_id": "582b98dca6908a703c0480ad",
  "__v": 2,
  "created": "2016-11-15T23:23:08.051Z",
  "users": [
    {
      "username": "raibui",
      "lastName": "uc",
      "firstName": "crhistian"
    },
    {
      "username": "buirai",
      "lastName": "uc",
      "firstName": "crhistian"
    }
  ],
  "permissions": [
    {
      "module": {
        "_id": "582b92af7118dff80d70492f",
        "name": "ratione",
        "description": "ipsam optio minus tempore eaque vel id\nerror repudiandae sed laboriosam",
        "__v": 0,
        "permissions": []
      },
      "permission": {
        "_id": "582b8eeaade47724430006ae",
        "__v": 0,
        "description": "ipsum aut ad qui molestias quia quasi\nvoluptate ut dolorum\nut voluptatem assumenda alias",
        "label": "est",
        "permissionId": "aut"
      },
      "_id": "582bac5bc96b2af407aa5369"
    },
    {
      "module": {
        "_id": "582b92af7118dff80d70492f",
        "name": "ratione",
        "description": "ipsam optio minus tempore eaque vel id\nerror repudiandae sed laboriosam",
        "__v": 0,
        "permissions": []
      },
      "permission": {
        "_id": "582b8eeaade47724430006b3",
        "__v": 0,
        "description": "nulla tenetur ipsa aspernatur non\ndolorum fugiat delectus occaecati cupiditate\nneque repellat nesciunt ad aliquid qui",
        "label": "voluptatem",
        "permissionId": "odio"
      },
      "_id": "582bac5bc96b2af407aa5368"
    }
  ],
  "description": "description3",
  "name": "group3"
}
migdonio1 commented 7 years ago

Les afecta en algo que aparezca ese id?

BuiRai commented 7 years ago

Afectar en algo crítico, no realmente, es solo que me molesta porque está consumiendo memoria en la base de datos, que realmente no es mucha, pero es molesto estar cargando con un _id que no me interesa.

JosshFT commented 7 years ago

Eso es de por sí, pero llamar al ObjectId de esa forma es redundante, ya que moongose ya está incluido, lo más apropiado sería Schéma.ObjectId, es lo mismo y te ahorras escritura, por otro lado el id que le pones no te lo crea moongose, es el id del objeto que referencías, me parece recordar que lo puedes omitir al hacer un populate antes de que te devuelva el recurso, de no ser así.. Francamente el "._id" no afecta en nada.. Ni siquiera significativamente en la memoria, por el contrario te puede ser de mucha utilidad del lado del cliente.

On Nov 17, 2016 12:18 AM, "Crhistian Uc Vázquez" notifications@github.com wrote:

Afectar en algo crítico, no realmente, es solo que me molesta porque está consumiendo memoria en la base de datos, que realmente no es mucha, pero es molesto estar cargando con un _id que no me interesa.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/kwantec/invoicecontrol/issues/50#issuecomment-261165303, or mute the thread https://github.com/notifications/unsubscribe-auth/AI3i0BSngi3aNov-q3cEIRBLF-zLw1CSks5q-_GqgaJpZM4KzPXK .