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

91
Vistas
MongoDB no creará un valor messageCount

así que estoy haciendo un comando de conteo de mensajes con discord.js y MongoDB, pero el valor "messageCount" simplemente nunca se crea. Lo busqué y miré documentos, pero no pude encontrar lo que estaba mal.

Códigos:

archivo contador-mensaje.js:

 const mongo = require("mongoose") const schema = require("./schemas/rank/message-count-schema") module.exports = client => { client.on('messageCreate', async (message) => { const { author } = message const { id } = author mongo.connect( process.env.MONGO_URI, { keepAlive: true } ) const dataQuery = await schema.findOne({ _id: id }) if (!dataQuery) { const newSchem = schema( { _id: id }, { $setOnInsert: { messageCount: 1 } }, { $inc: { messageCount: 1 } }, { upsert: true } ) await newSchem.save() } else { dataQuery.updateOne( { $inc: { messageCount: 1 } }, { upsert: true } ) } }) }

archivo message-count-schema.js:

 const mongoose = require('mongoose'); const messageCountSchema = new mongoose.Schema({ _id: { type: String, required: true }, messageCount: { type: Number, required: true } }) module.exports = mongoose.model('message-count', messageCountSchema);

¿Alguien puede decirme qué está mal y cómo solucionarlo? No estoy pidiendo que me den de comer con cuchara, solo lo que está mal.

ingrese la descripción de la imagen aquí

about 4 years ago · Santiago Gelvez
2 Respuestas
Responde la pregunta

0

La cuestión es que $setOnInsert solo es válido para operaciones de update cuando el valor upsert se establece en verdadero. Existe en estos métodos => updateOne() , updateMany , findAndModify() . En este caso, cuando no se trata de una operación de update , $setOnInsert no se ejecuta, por lo que sus datos no tienen el valor messageCount .

about 4 years ago · Santiago Gelvez Denunciar

0

Como dijo caladan antes, y además de eso, necesita .findbyId() si desea usar _id , ¿el recuento de mensajes es por usuario o por gremio? si por usuario puede agregar a su esquema un elemento de cadena de ID de usuario y usar

 const member = await message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.author; const dataQuery = await schema.findOne({ UserID: member.id }) const messagecount = dataQuery.messageCount; console.log(messagecount)

Si es por gremio, puede agregar el elemento GildId en su esquema y usar:

 const dataQuery = await schema.findOne({ GuildId: message.guild.id }) const messagecount = dataQuery.messageCount; console.log(messagecount)
about 4 years ago · Santiago Gelvez 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