Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向服务器发出POST请求以插入记录并在客户端检索生成的ID的方法_Javascript_Reactjs_Fetch Api - Fatal编程技术网

Javascript 向服务器发出POST请求以插入记录并在客户端检索生成的ID的方法

Javascript 向服务器发出POST请求以插入记录并在客户端检索生成的ID的方法,javascript,reactjs,fetch-api,Javascript,Reactjs,Fetch Api,我正在开发一个包含以下表格的应用程序:客户端|传输。客户端Id是传输中的外键。 我必须为传输创建一个向导,在第一步中,我可能需要创建一个客户端,并在下一步中通过React state传递client_id。我想要实现的是发布我的服务器来创建客户机,并在同一请求中检索生成的客户机id 这是我的后端代码: exports.createClient = function(req,res,next){ const text = 'INSERT INTO public.client (na

我正在开发一个包含以下表格的应用程序:客户端|传输。客户端Id是传输中的外键。 我必须为传输创建一个向导,在第一步中,我可能需要创建一个客户端,并在下一步中通过React state传递client_id。我想要实现的是发布我的服务器来创建客户机,并在同一请求中检索生成的客户机id

这是我的后端代码:

    exports.createClient = function(req,res,next){
    const text = 'INSERT INTO public.client (name, "isCompany", mobile, phone, email, tax_code, addr) VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING id'
    const values = [req.body.name,req.body.isCompany,req.body.mobile,req.body.phone,req.body.email,req.body.tax_code,req.body.addr];
    DBclient.query(text,values,function(err,result){
        if (err){
            console.log(err)
            res.status(400).send(err);
        }
        res.sendStatus(200).send(result.rows[0].id);
    });
};
在这里,我尝试检索响应:

var formData = new FormData();
        formData.append('name', this.state.client_name);
        formData.append('isCompany', this.state.client_isCompany);
        formData.append('tax_code', this.state.client_tax_code);
        formData.append('addr', this.state.client_addr);
        formData.append('phone', this.state.client_phone);
        formData.append('mobile', this.state.client_mobile);
        formData.append('email', this.state.client_email);
        await fetch(clienturl, {
            method: 'POST',
            body: formData
        }).then(data => this.setState({client_id:data}));
以下是我的状态:


如果有人能帮上忙,我将不胜感激。

在多次尝试使用postman和console.log()调试后,我意识到问题出在服务器端,而我没有设置响应的主体。在《邮递员》上,我看到服务器只响应状态码(200 OK)。使此工作正常的更新是:

DBclient.query(text,values,function(err,result){
    if (err){
        console.log(err)
        res.status(400).send(err);
    }   
    res.status(200).send({client_id : result.rows[0].id});
});

所以你收到的回复很好。问题是什么?请注意,您还没有。读取响应正文的正确方法是什么?我正在尝试检索服务器成功返回的int值sadd
。然后(res=>{if(res.ok)return res.text();else在
fetch()
调用之后抛出新错误(“HTTP”+res.status);}