Как передать параметр map внутри схемы валидатора класса

#node.js #class-validator

#node.js #класс-валидатор

Вопрос:

Я пытаюсь передать каждый параметр функции 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
  

почему проверка дважды получает второй идентификатор?

Ответ №1:

Если вы используете асинхронную функцию, тогда используйте await вместо then. Вы получили бы ожидаемый результат при использовании await, поскольку элемент управления будет ожидать выполнения метода validate, но с помощью then элемент управления просто выполняет содержимое внутри then в другом потоке и продолжает выполнять функцию map в основном потоке.