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

305
Visualizações
Uso de Mongoose FindoneAndUpdate en un bucle For

Estoy haciendo un comando Usar con Mongoose y Discordjs. Todo funciona bien, pero hay un problema con la base de datos.

Cuando trato de usarlo, como .use box 5 , tiene que eliminar 5 casillas de la base de datos, pero solo elimina 1.

Mi código:

 function random(min, max) { return Math.round(min + Math.random() * (max - min)); } const profileModel = require("../../models/users") const user = await profileModel.findOne({ userID: message.author.id }) if (!args[0]) return message.reply("WHAT THE HELL ARE YOU GOING TO USE :|") let item = user.inventory.find(v => v.name.toLowerCase() === args[0].toLowerCase()); if (!item) { return message.channel.send("You Dont have That Item"); } if (item.use === false) return message.reply("This Item Is Not Usable") function runUpdate(obj) { return new Promise((resolve, reject) => { profileModel.findOneAndUpdate({ userID: message.author.id }, { "$pull": { "inventory": obj } }) .then(result => resolve()) .catch(err => reject(err)) }); }; itemusing = args[0].toLowerCase() if (!args[1]) amount = 1 else amount = Math.floor(args[1]) console.log(amount) if (itemusing === "box") { if (amount > 1) { for (let m = 0; m < amount + 2; m++) { console.log(m) runUpdate(item) } let newboxes = 0; let coins = 0; for (let i = 0; i < amount; i++) { const rnd = random(1, 10) if (rnd <= 6) abox = false else abox = true const amountrnd = random(1000, 5000) if (abox === true) { newboxes += 1 coins += amountrnd } else { coins += amountrnd } } if (newboxes >= 1) { await profileModel.findOneAndUpdate({ userID: message.author.id }, { "$inc": { "coins": coins } }); await message.reply(`You Found These In ${amount} Box(s):\n\n${coins} Coins\n${newboxes} Boxes`) } else { message.reply(`You Found These In ${amount} Box(s):\n\n${coins} Coins`) await profileModel.updateOne({ userID: message.author.id }, { "$inc": { "coins": coins } }); } } else { message.reply("Soon") } }

No hay error por cierto. También incrusté algunas capturas de pantalla de cuando uso el comando:

El comando de uso

El inventario después de usar el comando

Tenía 46 antes de usar el comando; después de usar (5) cajas tengo 45.

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

0

Prueba esto:

 profileModel.findOneAndUpdate({ userID: message.author.id },{"$pull": { "inventory": obj } },{returnNewDocument: true})

o (a continuación debería funcionar para NodeJS )

 profileModel.findOneAndUpdate({ userID: message.author.id },{"$pull": { "inventory": obj } },{returnOriginal: false})

O findAndModify() en lugar de findOneAndUpdate()

Descargo de responsabilidad: no he ejecutado el código anterior. Basado en mi conocimiento sobre findAndModify y findOneAndUpdate, respondí.

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