Javascript ForEach在函数完成后执行
我的代码有问题。我需要检查cutlist数组中是否有一个material_id在materials数据库中不存在的项,但是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
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);
}