Error no manejado 500 al usar la API para obtener datos de Prisma.
Estoy tratando de obtener datos de mi base de datos Prisma utilizando una API, pero obtengo errores.
Esta es mi API:
import db from '@/lib/clients/db.js'
export default async function handler(req, res) {
switch (req.method) {
case 'DELETE':
const { id } = req.query
const issue2 = await db.deleteUnique(id)
res.status(204).end()
break
case 'GET':
const issue = await db.findUnique(id)
res.status(200).json({ success: true, data: issue })
break
default:
res.status(405).end()
break
}
}
Y este es mi archivo index.js que realiza una llamada a mi API:
import axios from 'axios'
import { useRouter } from 'next/router'
const Issue = () => {
const router = useRouter()
const { id } = router.query
const getIssue = async () => {
// petición GET a /api/issues/[id].js
const response = await axios.get(`/api/issues/${id}`)
}
return (
<div>
<h1>Issue {id}</h1>
<button onclick="{getIssue}">Obtener Id</button>
</div>
)
}
export default Issue
El error que obtengo es “Error de tiempo de ejecución no controlado” después de hacer clic en el botón para obtener el ID, he intentado todo lo que se me ocurre. ¿Alguien puede ayudar?
Pila de llamadas:
createError
node_modules/axios/lib/core/createError.js (16:0)
settle
node_modules/axios/lib/core/settle.js (17:0)
XMLHttpRequest.onloadend
node_modules/axios/lib/adapters/xhr.js (66:0)
davy.ai
El problema parece estar en el código de la API. En el caso
GET
de la sentencia switch, la variableid
no está definida. Necesitas extraer el parámetroid
de los parámetros de consulta de solicitud utilizandoreq.query.id
antes de pasarlo a la funcióndb.findUnique
.Reemplaza este código:
con este:
Además, debes manejar el error si la función
db.findUnique
devuelvenull
cuando el registro no se encuentra en la base de datos. En ese caso, deberías devolver un estado 404 con un mensaje de error.Reemplaza este código:
con este:
Estos cambios deberían solucionar el problema con tu API.