Javascript ForEach在函数完成后执行

Javascript ForEach在函数完成后执行,javascript,node.js,typescript,typeorm,Javascript,Node.js,Typescript,Typeorm,我的代码有问题。我需要检查cutlist数组中是否有一个material_id在materials数据库中不存在的项,但是forEach中的代码是在函数完成后执行的 const errors: string[] = []; await orderData.cutlist.forEach(async cutlist => { const doesMaterialExist = await this.materialsRepository.findMaterialById( cu

我的代码有问题。我需要检查cutlist数组中是否有一个material_id在materials数据库中不存在的项,但是forEach中的代码是在函数完成后执行的

const errors: string[] = [];

await orderData.cutlist.forEach(async cutlist => {
  const doesMaterialExist = await this.materialsRepository.findMaterialById(
    cutlist.material_id,
  );

  if (!doesMaterialExist) {
    errors.push('Material does not exist');
  }

 console.log('1')
});

console.log('2')

if (errors.length > 0) {
  throw new AppError('There is a invalid material in cutlists', 404);
}

执行此代码后,我的控制台是2->1。它正在检查ForEach循环之前的errors.length

在ForEach循环之前不能使用
wait
。有办法做到这一点,但在你的情况下,这是没有必要的

您可以将
forEach
转换为
for
循环,您的问题将得到解决

const errors: string[] = [];

for(var cutlist in orderData.cutlist){
  const doesMaterialExist = await this.materialsRepository.findMaterialById(
    cutlist.material_id,
  );

  if (!doesMaterialExist) {
    errors.push('Material does not exist');
  }

 console.log('1')
};

console.log('2')

if (errors.length > 0) {
  throw new AppError('There is a invalid material in cutlists', 404);
}