es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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)
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema parece estar en el código de la API. En el caso GET de la sentencia switch, la variable id no está definida. Necesitas extraer el parámetro id de los parámetros de consulta de solicitud utilizando req.query.id antes de pasarlo a la función db.findUnique.

    Reemplaza este código:

    const issue = await db.findUnique(id)
    

    con este:

    const { id } = req.query
    const issue = await db.findUnique({ where: { id: parseInt(id) } })
    

    Además, debes manejar el error si la función db.findUnique devuelve null 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:

    res.status(200).json({ success: true, data: issue })
    

    con este:

    if (!issue) {
      res.status(404).json({ success: false, message: 'No se encontró el problema' })
    } else {
      res.status(200).json({ success: true, data: issue })
    }
    

    Estos cambios deberían solucionar el problema con tu API.

Comments are closed.