首页 > 解决方案 > React 向 Node 发出 Get 请求的问题(快递)

问题描述

正如标题所说,我的反应应用程序的一部分试图从我的数据库中获取一些数据,并根据我传递给它的值进行选择。所以我要继续并首先显示我认为问题所在的代码:

所以首先,这是我的一个表单中向服务器发送请求的函数,我知道代码可能很难看,但我可以从 console.logs 告诉我发送的参数是我打算发送的(一个字符串称为“licenciaInput”

async handleClickLicencia (event) {
        event.preventDefault();
        console.log(this.state);
        console.log("licenciaInput: "+this.state.licenciaInput);
        const datoBuscar = this.state.licenciaInput;

        axios.get('http://localhost:3001/atletas/:licencia',this.state)
            .then(response =>{
                console.log(response)

            })
            .catch(error =>{
                console.log(error)
            })

然后,我在尝试获取“licencia”的 localhost 路由中调用了这个函数,并在我的 postgresql db 中启动了一个选择,其中 licencia="whatever",你可以在代码中看到这句话:

const getAtletasByLicencia = (request, response) => {
   const licencia = request.body.licenciaInput;
   console.log("Request: "+request);
   console.log("what the server gets: "+licencia);
   // const licencia = request.licenciaInput;
   const sentencia ="SELECT * FROM atleta WHERE licencia ='"+licencia+"'";
   pool.query(sentencia, (error, results) =>{
        if(error){
            throw error
        }
        response.status(200).json(results.rows)
    })
}

如您所见,我到处都有console.logs,但我仍然无法访问我发送的任何元素,因为我总是在服务器控制台上获得“未定义”值。

TLDR:如何访问从客户端表单传递到服务器的“licenciaInput”,我尝试过 request.body.licenciaInput、request.params.licenciaInput 和 request.licenciaInput,但这些似乎都不起作用

我也知道我必须处理从服务器收到的数据,但我需要先解决这个问题,然后再看两步。我对 React 和 node/express 也很陌生,所以请随时用我没有遇到的好的做法来烧我。提前致谢

编辑:我还添加了我拥有的这段代码,它显示了我在服务器中的方法的路线:

app.get('/atletas/:licencia', db.getAtletasByLicencia)

正如@Gillespie59 建议我应该发送一个 POST 请求,但我认为我不应该尝试向服务器发送参数以进行选择,然后将结果发送回客户端

标签: javascriptnode.jsreactjspostgresqlexpress

解决方案


将您的请求更改为:

axios.get(`http://localhost:3001/atletas/${this.state.licenciaInput}`)
  ...

你的路线(如果你使用快递)应该是这样的:


app.get('/atletas/:licencia', function (req, res) {
  var licencia = req.params.licencia
  ...
})



推荐阅读