首页 > 解决方案 > 为什么获取帖子响应中的正文为空

问题描述

我正在向我的 Node.js 服务器发送 POST 请求,但在 fetch 响应中返回的正文为空。

export default class PanelAddProd extends React.Component<any, IState>{

    state: IState = {
            "url": 'http://localhost:3000/products',
            name: 'e2334r23',
            desc: 'r2dfsdfwqewqedf',
            price: 44,
    }

    updateName = (e: React.FormEvent<HTMLInputElement>) => {
        this.setState({name: e.currentTarget.value});
    }

    updateDesc = (e: React.FormEvent<HTMLTextAreaElement>) => {
        this.setState({desc: e.currentTarget.value});
    }

    updatePrice = (e: React.FormEvent<HTMLInputElement>) => {
        this.setState({price: Number(e.currentTarget.value)});
    }

    addProduct = async (e: React.FormEvent<HTMLInputElement>) => {
        e.preventDefault();
        const data = JSON.stringify({
            name: this.state.name,
            description: this.state.desc,
            price: this.state.price,
        });

        const fetchOpts = {
            body: data,
            method: 'POST', // or 'PUT'
            mode: 'no-cors' as RequestMode,
            headers: {
                Accept: 'application/json',
                'Content-Type': 'application/json',
            },
        };
        try {
            console.log('Fetch data ', data);
            const response = await fetch(this.state.url, fetchOpts);
            console.log('Fetch response ', response);
            return response;
        } catch (error) {
            console.log('Fetch error ', error);
        }
    }

服务器端代码:

import { Controller, Body, Post } from "@nestjs/common";
import { ProductsService } from "./products.service";

@Controller('products')
export class ProductsController{
    constructor(private readonly productsService: ProductsService) {}

    @Post()
    async addProduct(@Body('name') prodTitle: string, @Body('description') prodDesc: string, @Body('price') prodPrice: number) {
        console.log('---------------------------------------------------------------------');
        console.log('Adding product...', prodTitle, prodDesc, prodPrice);
        const generatedId = await this.productsService.insertProduct(
            prodTitle, 
            prodDesc, 
            prodPrice
        );

        console.log('Product added', generatedId);
        return { id: generatedId };
    }
}

在尝试中,console.log 数据有值,但 response.body 为空。我的 nodeJS 服务器对请求做出反应,但正如预期的那样,它没有得到任何数据,并且它的 console.log 将所有变量都写为未识别的。

标签: node.jsreactjstypescriptfrontend

解决方案


推荐阅读