ОШИБКА: ParallelSaveError: Не удается сохранить() один и тот же документ несколько раз параллельно

#mongodb #discord.js

Вопрос:

Привет, у меня ошибка (я посмотрел на решения других людей, но они мне не очень помогают), и я не могу сказать, что это вызывает в discord.js и mongodb Ошибка заключается в следующем : UnhandledPromiseRejectionWarning: ParallelSaveError: Can't save() the same doc multiple times in parallel. Document: 60df55dea691a919b4deca21

Код, который делает это, находится здесь :

 const serverModel = require('../../models/serverSchema');
module.exports = {
    name: 'hangup',
    description: 'hangup on someone if they like eating cereal with a fork!',
    category: 'fun',
    aliases: global.aliases.fun.hangup,
    cooldown: 5,
    // Umm code i guess
    async execute(message, args, client, serverData) {
        if (serverData.calling == 'connected') {
            console.log('die');
            const OtherPerson = await serverModel.findOne({ talkingWith: serverData.serverID });
            if (OtherPerson) {
                OtherPerson.talkingWith = null;
                OtherPerson.lastMsg = null;
                OtherPerson.calling = 'hangup';
                OtherPerson.save();
            }

        }
        serverData.calling = 'no';
        serverData.channel = '';
        serverData.lastMsg = '';
        serverData.talkingWith = '';
        serverData.save(); //The error brings me here
        message.channel.send(':bangbang:**__Hangingup__ bye bye**:bangbang:');
    },
};
 

я не могу сказать, что это вызывает

как я уже сказал, я не могу сказать, что это вызывает, я использую mongodb, я почти уверен, что ошибка не из каких-либо других сценариев

Вот как в настоящее время выглядит база данных для данных сервера :

 talkingWith: '860785717882126356';
channel: '856912495737307137';
calling: 'connected';
lastMsg: null;
 

я не собираюсь добавлять, как выглядит база данных OtherPerson, потому что она неизвестна, но выглядит как «Данные сервера».

Комментарии:

1. Это происходит потому, что вы быстро сохраняете его. Я думаю, что для API mongodb существует ограничение скорости

2. @MrMythical Да, в этом и была проблема

Ответ №1:

Я нашел проблему

проблема заключалась в том, что я использовал эту команду serverData.save(); слишком быстро подряд

я нашел это, посмотрев в своем обработчике событий, я исправил это, добавив if () инструкцию

извините за такой маленький ответ, на самом деле добавить нечего