Можно ли надежно отправить несколько почтовых запросов через Ax ios в forEach l oop? - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь создать / поставить расписание для карточного турнира, которое будет состоять из набора документов (по одному на каждую неделю, в которую играют в игру) с недельным идентификатором и датой в MongoDB. Мой интерфейс требует две части пользовательских данных для выполнения sh это - количество недель и дата начала. Оттуда он использует asyn c forEach l oop для создания "x" количества документов в базе данных за несколько недель. Этот подход, кажется, работает частично, однако я получаю случайное количество документов, которые фактически создаются в MongoDB (количество документов, которые действительно создаются надежно, варьируются в двух средах - я могу получить до 10 надежно на моей рабочей станции dev, но не так на экземпляре микро облака на линоде). Кажется, что некоторые из обещаний отбрасываются, или сеть не успевает за количеством документов, которые мне нужно создать. Например, на моем местном Ма c. Я могу сделать 10 без проблем. Если я увеличу число до 20 недель, я иногда получаю 19, иногда 16 и т. Д. c., Но никогда 20. Если я увеличу число до 25, я получу больше 20, но никогда 25. В облаке я могу ' даже получить 10 для успешного распространения в базе данных. Я пробовал многочисленные способы решения этой проблемы, но не могу найти адекватного решения для получения всех документов в базе данных. Я надеюсь, что кто-то может посмотреть на мой код и не обязательно попытаться выяснить, что именно он делает, а посмотреть, есть ли что-нибудь, что я могу сделать с Ax ios, обещает синхронизировать этот запрос, чтобы они все сделали его в базу данных. Обратите внимание, что я пробовал несколько способов выполнить это. Этот последний пример, вероятно, имеет то, что является посторонним вызовом функции sendSchedule, но я пытался имитировать c шаблон «веб-помощника», который я нашел здесь в stackoverflow.

Вот мой последний код для этого (vue):

    import { api } from "../../helpers/helpers";

     createOrUpdate: function(weeksArr, firstDate, startDate, days) {
          weeksArr.forEach(async week => {
            let schedule = {};
            if (week === 1) {
              schedule.weekId = 1;
              schedule.gameDate = firstDate;
            }
            if (week > 1) {
              schedule.gameDate = startDate.setDate(startDate.getDate() + days);
              schedule.weekId = week;
            }
            const res = await api.createSchedule(schedule);
            console.log(res);
          });

    ------

    helpers.js

    export const api = {
    createSchedule: (async function(schedule) {
            let returnData = await sendSchedule(schedule)
            return returnData
        })
    }

   const sendSchedule = handleError(async payload => {    
        const res = await axios.post(createScheduleURL, payload);    
        return res.data;  
    });
...