req.query 在 GET 请求 express.js 上返回未定义

问题描述 投票:0回答:1

我正在制作一个用于医疗登记和咨询的应用程序,我想实现一个过滤器,在其中搜索客户姓名和盖子,但我在 req.query 中未定义。 SQL查询是正确的,我正在从前端获取数据。可能是什么原因导致的?

这是调用SQL查询的后端:

app.get('/libroOne/filter', (req,res) => {
    const { lid, nombre, apellidoPaterno, apellidoMaterno } = req.query;

    const q = "select d.did as Id, c.nombre as Nombre, CONCAT(c.apellidoPaterno, ' ', c.apellidoMaterno) as Apellidos, c.curso, CONCAT(u.nombre,' ',u.apellidoPaterno, ' ', u.apellidoMaterno) as Medico, d.fechaAtendido, d.diagnostico as 'Diagnóstico', d.tratamiento as 'Tratamiento', d.observaciones as 'Observaciones' from consulta_medica d join cliente c on d.cidFK2 = c.cid join usuario u on d.uidFK3 = u.uid join libro_consulta l on d.lidFK1 = l.lid where lid=? and c.nombre = ? and c.apellidoPaterno = ? and c.apellidoMaterno = ? order by d.fechaAtendido desc"
    db.query(q, [lid, nombre, apellidoPaterno, apellidoMaterno], (err, result) => {
        if(err) {
            console.error('Error en la consulta:', err);
            return res.json({Error: "Error inside server"});
        }
        console.log('Resultado de la consulta:', result);
        if (result.length > 0){
            return res.json(result);
        } else {
            return res.json({Error: "No existen datos"});
        }
    });
});

这是来自前端的调用:

    const handleFilter = async () => {
        try{
          const res = await axios.get(`http://localhost:8081/libroOne/filter?lid=${lid}&nombre=${nombre}&apellidoPaterno=${apellidoPaterno}&apellidoMaterno=${apellidoMaterno}`);
          console.log(res.data);
        }catch(err){
            alert(err)
        }
    }

我尝试将 console.log 放入后端的 req.query 中,但没有收到任何日志。后端应该返回一个数据数组,但只有我得到一个空数组。

javascript node.js express axios query-string
1个回答
0
投票

请参阅下面的 MRE,它是获取查询字符串所必需的。请用它来检查并找到您案例中的缺失点。

服务器.js

const express = require('express');
const axios = require('axios');

const app = express();

app.get('/libroOne/filter', (req, res) => {

  console.log(req.query);
});

app.listen(8081, () => {

  console.log('l@3000');
  const lid = '1',
    nombre = '2',
    apellidoPaterno = '3',
    apellidoMaterno = '4';
  axios.get(
    `http://localhost:8081/libroOne/filter?lid=${lid}&nombre=${nombre}&apellidoPaterno=${apellidoPaterno}&apellidoMaterno=${apellidoMaterno}`
  );
});

试运行

node server.js

服务器控制台输出

{ lid: '1', nombre: '2', apellidoPaterno: '3', apellidoMaterno: '4' }
© www.soinside.com 2019 - 2024. All rights reserved.