我开始学习Nest.js,因此我正在遵循Academind教程(link)。
当我尝试在//Style for BootStrap v4
$config['next_link'] = 'Next';
$config['prev_link'] = 'Prev';
$config['first_link'] = false;
$config['last_link'] = false;
$config['full_tag_open'] = '<ul class="pagination justify-content-center">';
$config['full_tag_close'] = '</ul>';
$config['attributes'] = ['class' => 'page-link'];
$config['first_tag_open'] = '<li class="page-item">';
$config['first_tag_close'] = '</li>';
$config['prev_tag_open'] = '<li class="page-item">';
$config['prev_tag_close'] = '</li>';
$config['next_tag_open'] = '<li class="page-item">';
$config['next_tag_close'] = '</li>';
$config['last_tag_open'] = '<li class="page-item">';
$config['last_tag_close'] = '</li>';
$config['cur_tag_open'] = '<li class="page-item active"><span class="page-link">';
$config['cur_tag_close'] = '<span class="sr-only">(current)</span></span></li>';
$config['num_tag_open'] = '<li class="page-item">';
$config['num_tag_close'] = '</li>';
请求中使用body
装饰器获取@Body()
变量时,我的代码无法正常工作。遵循POST
products.controller.ts
在终端中,输出只是一个空对象:@Post()
async addProduct(@Body() body: Product) {
console.log(body);
const generatedId = this.productService.insertProduct(body.title, body.description, 5.99);
return generatedId;
}
我搜索了其他示例以了解如何正确执行。我发现a tutorial in DigitalOcean在POST请求中也使用{}
的地方;它们在教程a repo with the example的结尾处保留。这个例子对我都不起作用。
我只是在@Body
文件的addBook()
函数中做了一点改动,以返回新书而不是所有书
book.service.ts
我从邮递员发出以下POST请求,但响应中有一个空对象。
除POST请求外,所有其他HTTP请求都运行良好。
任何想法在代码中可能出什么问题吗?提前致谢。 ?
答案 0 :(得分:7)
您正在发送form-data
,默认情况下,该NestJS无法正确解析。您可以将application/x-www-url-form-encoded
或application/json
与Postman中的raw
选项一起使用。 JSON主体如下所示:
{
"id": "7",
"title": "Whatever Title",
"desscription": "whats doc",
"author": "Me"
}
然后您的服务器将正确识别身体。另一种选择是添加一个可以正确解析表单数据的正文解析器。有多种选择,例如multer
,form-parser
,formidable
等。