Как настроить метод @Get () для получения и передачи значений? - PullRequest
0 голосов
/ 09 апреля 2020

Я создал контроллер для поиска и возврата товаров и продолжаю возвращать мне объект internal server error. Я создал методы в своем контроллере и сервисе, которые возвращают весь объект базы данных только для того, чтобы проверить мои настройки, и смог успешно запросить данные, перемещающиеся по пути API, как и ожидалось. Я не могу понять, что именно не работает здесь, с точки зрения того, что он не находит объект по какой-то причине или я делаю что-то неправильно, заставляя его сломаться, прежде чем он даже попытается найти его. Вот мой код.

GetProductsController

export class ProductDTO{
    cattegory: string;
    product: string;
}

@Controller('get-product')
export class GetProductsController {

    constructor(private dataService: GetProductsService){}

    @Get('find-product')
    getProduct(@Query()data: ProductDTO ){
        return this.dataService.fetchProduct(data.cattegory, data.product);
    }
}

Сервис

@Injectable()
export class GetProductsService {
    ProductData:ProductCattegoryItem[] = PRODUCTDATA; //imported mock data

    constructor(){}

    public fetchProduct(cattegory: string, product: string): ProductDataItem{
        return this.ProductData.find(a=> a.productCattegoryId === cattegory).products.find(a => a.productId === product) as ProductDataItem;
    }
}

Это путь, сгенерированный в Postman после добавления ключей и значений, которые я хочу передать в

http://localhost: 3333 / api / get-product / find- product? data.cattegory = golden_ratio_dividers & data.product = divider_03

Я рассматривал всевозможные примеры @Query(), но они такие базовые c, что не делают на самом деле показать что-нибудь, на самом деле многие методы только console.log() ответ, в отличие от поиска части данных в базе данных или что-то еще практическое. Кажется, я не могу найти что-то более глубокое в этом и понятия не имею, что мне нужно сделать, чтобы заставить его работать. Кто-нибудь видит проблему здесь?

1 Ответ

1 голос
/ 09 апреля 2020

HTTP-запросы GET никогда не имеют тела с ними, доступные данные находятся либо в параметрах запроса, либо в параметрах URL. С помощью Nest вы можете получить доступ к этим значениям через @Query() и @Param() соответственно.

...