首页 > 解决方案 > node js迁移太慢了

问题描述

我想知道下面我的迁移代码有什么问题,为什么它这么慢,迁移只是不断加载,我的实现人员有什么问题吗?一系列承诺是解决这个问题的方法吗?

#问题出在这个区块上

 for (let i = 0; i < documents.length; i++) {
        const prefix = Date.now().toString();
        const fileParts = documents[i].filename.split('.');
        const finalname = `${fileParts[0]}-${prefix}.${fileParts[1]}`;
        // eslint-disable-next-line no-await-in-loop
        await queryInterface.sequelize.query(`UPDATE ${EmployeeDocumentsModel.tableName} SET filename='${finalname}' WHERE id=${documents[i].id};`, { transaction });
      }

#代码

module.exports = {
  up: async (queryInterface) => {
    const transaction = await queryInterface.sequelize.transaction();
    try {
      // eslint-disable-next-line no-shadow
      const documents = await sequelizeClient.query(
        `SELECT id, filename, COUNT(filename) FROM ${EmployeeDocumentsModel.tableName} GROUP BY filename
      HAVING COUNT(filename) > 1;`,
        { type: QueryTypes.SELECT },
      );

      // eslint-disable-next-line no-plusplus
      for (let i = 0; i < documents.length; i++) {
        const prefix = Date.now().toString();
        const fileParts = documents[i].filename.split('.');
        const finalname = `${fileParts[0]}-${prefix}.${fileParts[1]}`;
        // eslint-disable-next-line no-await-in-loop
        await queryInterface.sequelize.query(`UPDATE ${EmployeeDocumentsModel.tableName} SET filename='${finalname}' WHERE id=${documents[i].id};`, { transaction });
      }

      // eslint-disable-next-line no-return-assign

      await queryInterface.addConstraint(
        EmployeeDocumentsModel.tableName,
        ['employeeId', 'filename'],
        {
          type: 'unique',
          name: 'composite_employee_filename',
        },
        {
          transaction,
        },
      );
      await transaction.commit();
    } catch (err) {
      // eslint-disable-next-line no-console
      console.log(err);
      await transaction.rollback();
      throw err;
    }
    return true;
  },

标签: javascriptnode.jsmigrationsequelize.js

解决方案


推荐阅读