javascript - 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;
},
解决方案
推荐阅读
- visual-c++ - vc++ 应用程序向后兼容性
- jsf - 从用 JSF 制作的 Java Web 应用程序下载 pdf 文件
- python - 如何解决安装 pygame 的问题?
- javascript - 如何使用内页中的锚进行重定向?
- docker - `go build` 从哪里获取代码?
- javascript - 我正在玩通过 JavaScript 存储用户输入的数据,需要帮助
- node.js - mongodb nodej驱动程序中的$sum聚合
- android - 我怎样才能调用支付数组?使用改造
- oracle - ORA-01722: 无效的数字,但数据类型是日期,它不会以任何方式接受它
- python-3.x - 如何使用漂亮的汤仅在段落内获取锚标签的文本?