> Faqs > CONSULTA con API Rest no devuelve los valores Deseados

CONSULTA con API Rest no devuelve los valores Deseados

Buen día a todos. Estoy consumiendo el siguiente recurso de una API...

export const TodasFechasRfc = async (req, res) => {
    try {
        const { peri, fini, ffin, nrfc } = req.params;
        const pool = await getConnection();
        const result = await pool
            .request()
            .input('peri', sql.VarChar, peri)
            .input('fini', sql.DateTime, fini)
            .input('ffin', sql.DateTime, ffin)
            .input('nrfc', sql.VarChar, nrfc)
            .query("SELECT * FROM [RecursosHumanos].[dbo].ChecadasPersonal WHERE Periodo = @peri AND Rfc = @nrfc AND HoraCheco >= @fini AND HoraCheco <= @ffin ORDER BY HoraCheco");
        return res.json(result.recordsets[0])
    } catch (error) {
        console.log(error.message)
    }
};

en un SQLServer, pero no me arroja resultados que yo se que si existen.

Mi solicitud desde mi código va así:

https://<<miservidor>>:3000/checadas/todasfechasrfc/20243/2024-11-06 18:50:00/2024-11-06 20:00:00/<<rfcpersonal>>

Lo consulto directamente desde el navegador y también me da resultado vacio:

/ 20241107122845
// http://<<miservidor>>:3000/checadas/todasfechasrfc/20243/2024-11-06%2018:50:00/2024-11-06%2020:00:00/<<rfcpersonal>>

Pero, si hago la misma consulta directamente en la Base de datos:

SELECT *
FROM RecursosHumanos.dbo.ChecadasPersonal
WHERE Periodo = '20243' AND Rfc = '<<rfcpersonal>>' AND HoraCheco >= '2024-11-06 18:50:00' AND HoraCheco <= '2024-11-06 20:00:00' ORDER BY HoraCheco;

Si encuentra registros.

4	20243	2024-11-06 19:03:24.150	S	N		2024-11-06 19:03:24.273

Alguna sugerencia de que estoy haciendo mal, agradezco de antemando su apoyo.

Respuestas

La verdad es que es muy complicado decir qué es lo que pueda pasar sin ver el código del backend... si es que tienes un backend tuyo propio, que me imagino que sí tendrás.

Igual el backend no está recibiendo bien los datos que le estás enviando.

Formato de Fechas: Verifica que las fechas fini y ffin se estén enviando correctamente desde la URL. Si estás haciendo la consulta desde el navegador, puede que los espacios en las fechas se estén convirtiendo en caracteres %20. Asegúrate de que la cadena esté decodificada correctamente antes de usarla en tu consulta. Si es necesario, usa decodeURIComponent para asegurarte de que los parámetros de las fechas están siendo interpretados correctamente.

Tipos de Datos en SQL Server: Asegúrate de que las fechas en la consulta SQL tienen el formato correcto y se están mapeando correctamente al tipo sql.DateTime en tu código. Puede haber un problema si las fechas se están convirtiendo incorrectamente o no coinciden en el formato esperado.

Consulta Exacta de SQL: Prueba imprimiendo (o loggeando) la consulta que se está construyendo en tu código con los valores de peri, fini, ffin y nrfc para verificar que coincide exactamente con la consulta que ejecutas manualmente en la base de datos.

Espacios en Blanco o Caracteres Extra: Es posible que los valores de peri o nrfc tengan caracteres adicionales (como espacios en blanco o caracteres invisibles) que puedan hacer que la consulta no coincida correctamente. Prueba haciendo trim() en esos valores antes de enviarlos a la consulta.

Si no encuentras el problema trata de debugear la SQL que ejecuta el servidor... a ver si eso te ayuda.

Victor
302 8 21 17