Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

170
Vistas
¿Cómo guardar datos sin crear un nuevo objeto en la base de datos mongoose?

Intento guardar datos usando el comando bot, pero cada vez que envío los datos creará un nuevo objeto, quiero que sea solo 1 objeto, pero cada vez que el mismo usuario envíe datos, obtendrá cambios/actualizaciones automáticamente, no creará un nuevo objeto.

Así guardo los datos

 const subregis = "!reg ign:"; client.on("message", msg => { if (msg.content.includes(subregis)){ const user = new User({ _id: mongoose.Types.ObjectId(), userID: msg.author.id, nickname: msg.content.substring(msg.content.indexOf(":") + 1) // so basically anything after the : will be the username }); user.save().then(result => console.log(result)).catch(err => console.log(err)); msg.reply("Data has been submitted successfully") } });

este es mi esquema

 const mongoose = require('mongoose'); const Schema = mongoose.Schema; const profileSchema = new Schema({ _id: mongoose.Schema.Types.ObjectId, userID: String, nickname: String, }); module.exports = mongoose.model("User", profileSchema);

cada vez que ordeno !reg ign , agregará un nuevo objeto, no guardará/actualizará la identificación del usuario existente.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Si desea actualizar un User existente, debe usar la función findOneAndUpdate :

 const subregis = '!reg ign:'; client.on('message', async (msg) => { try { if (msg.content.includes(subregis)) { const updatedUser = await User.findOneAndUpdate( { userID: msg.author.id }, { nickname: msg.content.substring(msg.content.indexOf(':') + 1), // so basically anything after the : will be the username }, { new: true, // Return an updated instance of the User } ); console.log(updatedUser); msg.reply('Data has been submitted successfully'); } } catch (err) { console.log(err); } });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Lo único que debe hacer es verificar si hay datos relacionados con ese usuario antes de crear una colección.

 Schema.findOne({ userID: msg.author.id }, async (err, data) =>{ if (data) { return msg.reply({content: `you already have a nickname, it's ${data.nicknamd}}) } if (!data) { // Create the Schema } })

Si desea actualizar el uso de apodo

 const newdata = Schema.findOneandUpdate({}) ... //then follow what lpizzini said above
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda