React向Node发出Get请求的问题

时间:2020-05-30 18:09:53

标签: javascript node.js reactjs postgresql express

正如标题所述,我有我的react应用程序的一部分,该部分试图从数据库中获取一些数据,然后根据传递给它的值进行选择。因此,我将继续并首先显示我认为问题所在的代码:

因此,首先,这是我发送请求到服务器的表单中的一个函数,我知道代码可能很丑陋,但是我可以从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”的本地主机路由中调用的函数,并在我的postgresql db中启动一个选择,其中licencia =“ whatever”,您可以在代码中看到以下语句: / p>

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请求,但我不认为如果我同时尝试将参数发送到服务器以进行选择,然后将结果发送回客户端,则应该

2 个答案:

答案 0 :(得分:1)

将您的请求更改为:

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

和您的路线(如果您使用的是快递)应如下所示:


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


答案 1 :(得分:0)

在使用request.body时,您应该发送带有axios的POST请求并添加一个正文。