Пн goose. js не удалять объект из массива - PullRequest
0 голосов
/ 21 июня 2020

Я использую Mon goose со своим ботом Discord, и я делаю функцию, в которой нарушения могут быть удалены от любого упомянутого пользователя (ей).

Нарушения сохраняются в Array

Однако при попытке удалить объект из массива ничего не происходит, никаких ошибок.

Вот мой код

Что foundCase определяется как (возвращает этот объект)

{
  type: 'warn',
  caseNum: 6,
  userID: '300816697282002946',
  responsibleModerator: '300816697282002946',
  reason: 'playing minecraft',
  date: 1592678689923
}

Мой код

let foundCase = message.guild.data.infractions.find(c => {
                        return c.userID === calledMember.user.id && c.caseNum === Number(caseNum);
                    })

                    if (!foundCase)
                        return message.channel.send(`There were no cases found with that ID to remove from this user. Please ensure the case number is correct, and the user you are mentioning is the right user.`)



                    console.log(foundCase)
                    await client.guildData.updateOne( { guildData: message.guild.id }, { $pull: { infractions: foundCase }})
                    message.channel.send(`I have successfully deleted case number \`${caseNum}\`, and removed the infraction from the user. The change will reflect in any reports within 5 mins.`)
                

Однако ничего не происходит. Нарушение вообще не устранено и все еще находится в массиве.

Есть ли у кого-нибудь предложения?

1 Ответ

0 голосов
/ 21 июня 2020

это может быть тот случай, когда ваш foundCase возвращает пустой объект, если идентификатор не совпадает, поэтому для безопасности измените эту строку if (!foundCase) на эту if(foundCase.userId=="undefined")

также вы можете попробовать это

client.guildData.updateOne( { guildData: message.guild.id }, { $pull: { infractions: "foundCase"}})

или это

client.guildData.updateOne( { guildData: message.guild.id }, { $pull:{infractions: { $in: [ "foundCase"] }}})
...