Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

202
Visualizações
Mongoose no asigna automáticamente un _id a los elementos de mi matriz cuando los presiona, ¿por qué?

entonces, como dice el título, quiero que mongoose agregue automáticamente un campo _id a los objetos que inserto en mi matriz.

Aquí está mi esquema de mangosta:

 var playerModel = new Schema({ user: { type: mongoose.Schema.Types.ObjectId, ref: "Users", }, class: { type: String, required: true, }, level: { type: Number, default: 1, }, spells: { type: [String], default: ["", "", "", "", ""], }, inventory: [], toolbelt: { axe: [{}], pickaxe: [{}], fishingrod: [{}], hammer: [{}], saw: [{}], sewingkit: [{}], knife: [{}], gemkit: [{}], food: [{}], potion: [{}], }, gear: { weapon: [{}], head: [{}], chest: [{}], gloves: [{}], legs: [{}], shoes: [{}], earrings: [{}], ring: [{}], necklace: [{}], }, gold: { type: Number, default: 0, }, bagSize: { type: Number, default: 20, }, skills: { type: [userSkills], default: defaultSkills, }, });

Entonces, en última instancia, cuando envío un nuevo elemento a mi player.inventory, quiero que mongoose agregue automáticamente el _id, pero no lo hace. También en mi esquema, defino el inventario para que sea solo una matriz para poder insertar diferentes objetos que no tienen la misma estructura.

Así que cada vez que hago esto

 player.inventory.push(player.toolbelt.pickaxe[0]);

Quiero que mi elemento tenga todas sus propiedades de lo que inserté y también una propiedad _id generada automáticamente.

Ahora se ve así en mi base de datos: Imagen de mi campo Mongo DB

Espero haberme aclarado y alguien me pueda ayudar :)

¡Gracias a todos!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Para cualquier persona en el futuro, solucioné mi problema creando un nuevo esquema con la opción estricta establecida en falso:

 var inventoryItem = new Schema({}, { strict: false });

y luego decir que el inventario es:

 inventory: [inventorySchema],

Por alguna razón esto funciona, pero no esto:

 inventory: [{}, { strict: false }],

tan bueno saber! :)

Buenos días !

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda