#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 в основном потоке.