Сохранение с мангустом в mongodb в петле - PullRequest
0 голосов
/ 27 февраля 2019

Я хочу сохранить объект несколько раз, с изменением поля даты - добавление одного месяца на итерацию.

Цикл for не работает из-за асинхронной природы узла.

const saveMany = (req, res, obj, data) => {
    let saves = [];
    if (data.frequency === 'monthly') {
         let i = 0;
         for (let i = 0; i < data.reccuring_length; i++) {
            const newEntry = new obj(data);
            if (i != 0) newEntry.created_date.addMonths(1) //using datejs
            newEntry.save((err, entry) => {
                if (err) {
                    return res.status(400).send({
                        message: err
                    });
                }
                saves.push(entry);
            })

        }) //end of for loop
        return res.json(saves)

    } //end of if
}

Я видел материал об обещаниях / асинхронной библиотеке, но не могу сделать работающую реализацию (хотя я новичок в этом, хотя, возможно, упускаю что-то очевидное).

Любая помощь приветствуется :)

РЕДАКТИРОВАТЬ: Сохранение в MongoDB в цикле

Нашел эту ссылку, которая имеет отношение, но если у кого-то есть другиепредложения, которые были бы хорошими.

РЕДАКТИРОВАТЬ 2:

Только что понял, что мой код имеет случай верблюда и змеи, изменив в моем коде, чтобы сделать случай всех данных объекта змеей.

1 Ответ

0 голосов
/ 27 февраля 2019

Я думаю, что вы можете сделать что-то вроде этого:

const saveMany = async (req, res, obj, data) => {
let saves = [];
if (data.frequency === 'monthly') {
     let i = 0;
     for (let i = 0; i < data.reccuring_length; i++) {
        const newEntry = new obj(data);
        if (i != 0) newEntry.created_date.addMonths(1) //using datejs
        try{
          const entry= await newEntry.save();
          saves.push(entry);
        } catch(err) {
          return res.status(400).send({ message: err });
        }
    }) //end of for loop
    return res.json(saves)

} //end of if
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...