Tengo este código donde barajo una matriz y muestro los primeros 16 valores en una inserción de discord.js:
const items = require('../schemas/gameSchema'); const items0 = await items.find(); var shuffle = require('shuffle-array'); const items1 = shuffle(items0); const lb = items1 .slice(0) .map( ({ DepositAmount, BetAmount, GameName, TotalPlays }, pos) => `**${GameName}** \n Initial Deposit Amount: **${commaNumber( DepositAmount, )}** <:bob:809551218217058354> \n Bet Amount: **${commaNumber( BetAmount, )}** <:bob:809551218217058354> \n Total Game Plays : ${commaNumber( TotalPlays, )} 🕹 \n `, ) .join('\n'); const lbnewnew = lb.slice(15); const newlb = lbnewnew.toString(); let exampleEmbed = new Discord.MessageEmbed() .setColor('RANDOM') .setTitle('Discover Games') .setDescription(`${newlb}`) .setTimestamp() .setFooter(`You can play games with /game play <game name>`); await interaction.reply({ embeds: [exampleEmbed] });Aquí está el gameSchema (definido en elementos constantes)
const mongoose = require('mongoose') const adSchema = mongoose.Schema({ User:String, Funds:Number, ProfitToClaim:Number, TotalProfit:Number, TotalLoss:Number, DepositAmount:Number, BetAmount:Number, TotalPlays:Number, TotalWins:Number, TotalLosses:Number, GameName:String, GameDescription:String, }) module.exports = mongoose.model('NewGames', adSchema, 'NewGames')Todo lo que estoy tomando del esquema está definido, pero cuando ejecuto este comando, el primer elemento que se muestra tiene un nombre roto con algunas letras aleatorias.
No hay ningún juego llamado em o ial en la base de datos, así que no estoy seguro de por qué sucede esto.
¿Cómo evito que diga caracteres aleatorios y no muestre el nombre del juego del primer elemento? ¿Y por qué está pasando esto?
Es porque está cortando los primeros 15 caracteres (es decir lb.slice(15) ). En su lugar, debe conservar los primeros 15 resultados de items1 . Tampoco necesita todos esos toString s y literales de plantilla.
const description = items1 .slice(0, 15) .map( ({ DepositAmount, BetAmount, GameName, TotalPlays }, pos) => `**${GameName}** \n Initial Deposit Amount: **${commaNumber( DepositAmount, )}** <:bob:809551218217058354> \n Bet Amount: **${commaNumber( BetAmount, )}** <:bob:809551218217058354> \n Total Game Plays : ${commaNumber( TotalPlays, )} 🕹 \n `, ) .join('\n'); let exampleEmbed = new Discord.MessageEmbed() .setColor('RANDOM') .setTitle('Discover Games') .setDescription(description) .setTimestamp() .setFooter(`You can play games with /game play <game name>`); await interaction.reply({ embeds: [exampleEmbed] });