简体   繁体   English

为什么在 nest.js 中找不到参数

[英]Why cannot find argument in nest.js

When I develop API by nestjs , I suffered following errors .当我使用nestjs开发API ,我遇到了以下errors

It seems argument must be defined.似乎必须定义参数。

Here is my controller.ts这是我的controller.ts

  @Get()
    getdata(@Query() query: { place: string}){
    return this.eventService.getEvent(place);
  }

Here is my service.ts这是我的service.ts

  async getEvent(eventPlace: string): Promise<any>{
    const event = await this.eventRepository
    .find({
      where: {
        place: eventPlace,
      },
    });

Here is my error这是我的error

src/event/event.controller.ts:24:39 - error TS2304: Cannot find name 'place'.

24     return this.eventService.getEvent(place);
                                         ~~~~~

[4:15:34 AM] Found 1 error. Watching for file changes.

Why this argument cannot be found ?为什么找不到这个论点?

I set argument in getdata function.我在getdata函数中设置了参数。 If someone has opinion, please let me know.如果有人有意见,请告诉我。

Thanks谢谢

The @Query decorator lets you extract a specific key. @Query装饰器可让您提取特定键。 You can just define your controller like this to get a better experience:您可以像这样定义控制器以获得更好的体验:

@Get()
getdata(@Query('place') place: string) {
    return this.eventService.getEvent(place);
}

To add on to Jesse's answer, you could use object deconstructing and do something similar like要添加 Jesse 的答案,您可以使用对象解构并执行类似的操作

@Get()
getData(@Query() { place }: { place: string }) {
  return this.eventService.getEvent(place);
}

This is useful when you want to validate an entire DTO, but only need some of the fields from it.当您想要验证整个 DTO,但只需要其中的某些字段时,这很有用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM