труба работает успешно, но не преобразует значение - PullRequest
0 голосов
/ 21 февраля 2020

, поэтому я использую Nest Js с TypeORM и MongoDB. Я создал ParseObjectIdPipe для идентификаторов объектов MongoDB, потому что нет встроенного решения

import { PipeTransform, Injectable, BadRequestException } from '@nestjs/common';
import { ObjectID } from 'mongodb';

@Injectable()
export class ParseObjectIdPipe implements PipeTransform<any, ObjectID> {
  public transform(value: any): ObjectID {
    try {
      const transformedObjectId: ObjectID = ObjectID.createFromHexString(value);
      return transformedObjectId;
    } catch (error) {
      throw new BadRequestException('Validation failed (ObjectId is expected)');
    }
  }
}

Я вызываю URL

localhost: 3000 / modules / 5e4fd05a3f7a4d3f28db5f06

для выполнения функции моего контроллера

@Delete(':id')
public deleteModuleById(@Param('id', ParseObjectIdPipe) id: ObjectID): Promise<void> {
  // ...
}

Канал не выдает ошибок и, кажется, возвращает действительное значение. Он попадает только в оператор catch для недействительных идентификаторов. К сожалению, значение становится недействительным до достижения функции контроллера. Когда я снова запускаю это в моем контроллере

try {
  ObjectID.createFromHexString(id);
} catch (error) {
  throw error;
}

, возникает исключение. Я что-то пропустил? Я хочу проверить правильность идентификатора входящей строки в качестве действительного идентификатора объекта MongoDB и преобразовать / привести его.

...