在NodeJS项目上的Sequelize Orm中使用foreach批量创建数据?

时间:2019-04-03 11:48:59

标签: mysql arrays node.js foreach sequelize.js

我从将xls导入到nodejs中的joson方法中得到了一个josn数据。 当另一个表需要第一个表ID来创建数据时,我需要同时创建两个表数据。

我尝试了 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);
  });

0 个答案:

没有答案