我正在制作一个用于医疗登记和咨询的应用程序,我想实现一个过滤器,在其中搜索客户姓名和盖子,但我在 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 中,但没有收到任何日志。后端应该返回一个数据数组,但只有我得到一个空数组。
请参阅下面的 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' }