• Как изменить ответ валидатора class-validator при валидации запроса?

    @lookingfor2 Автор вопроса
    // main.ts точка входа
    async function bootstrap() {
      const app = await NestFactory.create(AppModule, { cors: true });
    
      // We'll start by binding ValidationPipe at the application level,
      // thus ensuring all endpoints are protected from receiving incorrect data.
      app.useGlobalPipes(
        new ValidationPipe({
          exceptionFactory: (errors: ValidationError[]) => {
            return new BadRequestException(formatErrorsHelper(errors));
          },
        }),
      );
      // swagger
      const config = new DocumentBuilder()
        .setTitle('Salary365 manager API')
        .setDescription('Salary365 manager API description')
        .setVersion('1.0')
        .addBearerAuth(
          { type: 'http', scheme: 'bearer', bearerFormat: 'JWT' },
          'access-token',
        )
        .build();
      const document = SwaggerModule.createDocument(app, config);
      SwaggerModule.setup('/api', app, document);
      // start listen and serve port from env
      await app.listen(process.env.APP_PORT);
    }

    // хелпер для мутации ответа
    import { ValidationError } from '@nestjs/common/interfaces/external/validation-error.interface';
    
    export const formatErrorsHelper = (errors: ValidationError[]) =>
      errors.map((item) => ({ [item.property]: Object.values(item.constraints) }));
    Ответ написан
    Комментировать
  • Почему не происходит новый рендеринг при изменении props?

    @lookingfor2 Автор вопроса
    И отдельно стоит отметить функцию componentWillReceiveProps(nextProps), которая вызывается при обновлении объекта props. Новые значения этого объекта передаются в функции в качестве параметра. Как правило, в этой функции устанавливаются те свойства компонента, в том числе из this.state, которые зависят от значений из props.
    Ответ написан
    Комментировать
  • Как проверить если ли слово в массиве?

    @lookingfor2 Автор вопроса
    Решил вопрос, может кому пригодится
    Добавляем и удаляем при повторном клике значения с инпута

    $(document).ready(function() {
    var items = [];
    $('#all-target tbody tr').on('click', function() {
    let price = $(this).find("td:first");
    var value = price.text();
    if (items.indexOf(value) == -1) {
    items.push(value);
    } else {
    items.splice(value, 1);
    }
    console.log(items);
    $('#amount').val(JSON.stringify(items));
    });
    });
    Ответ написан
    Комментировать