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

97
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 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