我希望能够从查询参数中获得车牌,但是无论我以何种方式编写代码,它似乎都无法正常工作,因此我很困惑为什么它不起作用。
这是预期的行为:使用以下GET请求时:http://localhost:3978/licenseplate/getleasingcompany?licenseplate=1-WMW-478
我想提取牌照参数。
这是我当前的代码:
@Get('getleasingcompany')
async getLeasingCompany(@Query('licenseplate') licenseplate: string) {
console.log(licenseplate);
}
在尝试邮递员操作时,这会将licenseplate
记录为undefined
。
我还尝试了这段代码的变体,例如:
@Get('getleasingcompany')
async getLeasingCompany(@Query() query) {
console.log(query);
}
此日志记录query
为[Function: getQuery]
,我不知道该如何处理(query.licenseplate
是undefined
)
在Stackoverflow说明here中找到了另一个选项,其中Kim使用路径参数。不幸的是,这确实对我有用,但是我的程序无法使用这种行为。
有人可以解释我在做什么错吗?谢谢!
编辑1:经过一番评论,我将软件包更新为版本7.1.2,无济于事。将query
返回邮递员将得到以下输出:
function getQuery() {
// always return a string, because this is the raw query string.
// if the queryParser plugin is used, req.query will provide an empty
// object fallback.
return this.getUrl().query || '';
}
编辑2:尝试通过导入Request
进入Express路线,如下所示:import { Request } from "express";
。现在的代码如下所示:
@Get('getleasingcompany')
async getLeasingCompany(@Req() request: Request) {
console.log(request);
}
此日志的一部分确实显示查询已保存了该变量:
originalUrl: '/licenseplate/getleasingcompany?licenseplate=1-WMW-478',
_parsedUrl:
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: '?licenseplate=1-WMW-478',
query: 'licenseplate=1-WMW-478',
pathname: '/licenseplate/getleasingcompany',
path: '/licenseplate/getleasingcompany?licenseplate=1-WMW-478',
href: '/licenseplate/getleasingcompany?licenseplate=1-WMW-478',
_raw: '/licenseplate/getleasingcompany?licenseplate=1-WMW-478' },
但是,登录request.query
时,仍然得到[Function: GetQuery]
。
答案 0 :(得分:1)
在您的代码中看起来没有任何问题。在使用以下控制器并卷曲的Nest v7上,我得到了您期望的结果
import { Controller, Get, Query } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(@Query() query: Record<string, any>): string {
console.log(query);
return this.appService.getHello();
}
}
curl http://localhost:3000/\?queryparam\=something
[Nest] 46471 - 06/02/2020, 2:55:11 PM [NestFactory] Starting Nest application...
[Nest] 46471 - 06/02/2020, 2:55:11 PM [InstanceLoader] AppModule dependencies initialized +12ms
[Nest] 46471 - 06/02/2020, 2:55:11 PM [RoutesResolver] AppController {}: +15ms
[Nest] 46471 - 06/02/2020, 2:55:11 PM [RouterExplorer] Mapped {, GET} route +9ms
[Nest] 46471 - 06/02/2020, 2:55:11 PM [NestApplication] Nest application successfully started +9ms
{ queryparam: 'something' }
我唯一的猜测是Nest版本不匹配
答案 1 :(得分:1)
我还没有找到为什么该程序无法按预期运行的原因,但是我只是通过启动一个新的Nest项目解决了该问题。当我注意到该项目按预期工作时,我复制了除package.json之外的所有文件,并一个接一个地重新安装了所有必需的依赖项。我只删除了1个依存关系restify
,但最终我不需要了。不过,它可以与该软件包一起使用,所以这不是问题。
由于这些发现,我认为这肯定是版本问题,尽管我仍不确定。