如何在类验证器模式中传递map参数

时间:2019-04-07 07:49:07

标签: node.js class-validator

我正在尝试将map函数的每个参数传递给validate函数,但是validate函数内部的变量会提供map函数的最后一个值

result = jsonData.map(async (id, index) => {
        customerInfo = getInfos(id, index);

        console.log("map " + customerInfo.id);

        return validate("customerSchema", id).then(errors => {

        console.log("validate " + customerInfo.id);

          if (errors.length > 0) {
            throw new HttpException(
              {
                status: HttpStatus.FORBIDDEN,
                error: errors[0].constraints
              },
              403
            );
          }

        });
      });

预期输出:

map 1
validate 1
map 2
validate 2

实际输出:

map 1
map 2
validate 2
validate 2

为什么验证两次获得第二个ID?

1 个答案:

答案 0 :(得分:1)

如果您正在使用 async 函数,请使用 await 代替 then 。使用 await 可以得到预期的输出,因为控件将等待 validate 方法的执行,但是使用 then 控件将仅执行内容在另一个线程内的 then 中,并继续在主线程上执行 map 函数。