Массовые данные для создания с использованием foreach в sequelize orm в проекте nodejs? - PullRequest
0 голосов
/ 03 апреля 2019

Я получаю данные josn от импорта метода xls в joson в nodejs.И мне нужно создать две таблицы данных одновременно, когда другой таблице нужен первый идентификатор таблицы для создания данных.

Я попытался asyncfunction с setTimeout для создания данных.

Это как рабочий. Но он не подходит для более 1000 записей

const asyncFunction = (item, cb) => {
    setTimeout(() => {
      const tempDate = item.dateOfBirth.split('/');
      const login = {
        firstName: item.firstName,
        lastName: item.lastName,
        email: item.email,
        mobile: item.mobile,
        gender: item.gender,
        dateOfBirth: moment(new Date(`${tempDate[1]}/${tempDate[0]}/${tempDate[2]}`)).toISOString(),
        city: item.city,
        pincode: item.pincode,
        state: item.state,
        country: item.country,
        roleId: 3,
        address: item.address,
        branchId: req.body.branchId,
        batchId: req.body.batchId,
      };

      Login.create(login).then((log) => {
        const alumni = {
          register_number:item.registerNumber ,
          about: item.about,

          loginId: log.id,
        };
        Alumni.create(alumni).then(() => {
          console.log('sucesss');
          cb(item);
        }).catch(Sequelize.ValidationError, (errorin) => {
          res.status(400).send(errorin);
        });
      }).catch(Sequelize.ValidationError, (errorin) => {
      });
    }, 3000);
  };
  const requests = result.map(item => new Promise((resolve) => {
    asyncFunction(item, resolve);
  }));

  Promise.all(requests).then((data) => {
    res.status(200).send(data);
  }).catch(Sequelize.ValidationError, (errorin) => {
    res.status(400).send(errorin);
  });
...