Pensé que funcionaría de manera similar a mi solicitud de eliminación, ya que se dirige a un usuario específico (la solicitud de eliminación funciona perfectamente), por lo que también pasé una identificación a mi solicitud de obtención. Registré la respuesta de la solicitud y recibo el error de mi bloque de captura en el archivo donde definí mis consultas SQL usando Knex, así que creo que algo está mal con mi consulta SQL.

En la respuesta registrada, también puedo ver la identificación del usuario que quiero mostrar, lo cual es una buena señal, por lo que creo que debe haber un error menor en algún lugar de mi consulta o solicitud de axios para mostrar un usuario.

He proporcionado una foto de la respuesta que registré cuando hago clic en el botón Mostrar usuario: respuesta registrada de la solicitud de obtención

// Display specific User
exports.userDisplay = async (req, res) => {
    // Find apecific user in database and display
    knex('users')
    .where('id', req.body.id) // find correct record based on id
    .then(() => {
        // Send users extracted from database in response
        res.json( { message: `This is the data we found: ${req.body.id} ` })
      })
      .catch(err => {
        // Send a error message in response
        res.json({ message: `There was an error retrieving user: ${err}` })
      })
}

    // Display User
    const handleUserDisplay = async (id: number, name: string) => {
        // Send GET request to 'users/all' endpoint
        axios
            .get("http://localhost:8000/users/display", { data: {
                id: id
              } })
            .then((response) => {
                // Update the users state
                setDisplayedUsers(response.data);
                console.log(response)
                // Update loading state
                setLoading(false);
            })
            .catch((error) =>
                console.error(`There was an error retrieving the user list: ${error}`)
            );
    };

Trabajando borrar consulta


// Remove specific user
exports.usersDelete = async (req, res) => {
 // Find specific user in the database and remove it
 knex('users')
   .where('id', req.body.id) // find correct record based on id
   .del() // delete the record
   .then(() => {
     // Send a success message in response
     res.json({ message: `User ${req.body.id} deleted.` })
   })
   .catch(err => {
     // Send a error message in response
     res.json({ message: `There was an error deleting ${req.body.id} User: ${err}` })
   })
}

0
marcCodez 29 ago. 2020 a las 11:29

1 respuesta

La mejor respuesta

Las solicitudes de GET no tienen cuerpos. Al menos, en teoría, cualquier solicitud HTTP puede hacerlo, pero está buscando su valor en el lugar equivocado. Por lo general, uno enviaría la ID en la URL, por lo que para una ruta que coincida:

/users/display/:id

Enviarías:

/users/display/12345

Usando, imagino, algo como:

axios.get(`http://localhost:8000/users/display/${id}`)

En el lado del servidor, recibiría su ID como req.params.id. Por supuesto, he asumido que estás usando Express, ¡pero parece que lo estás usando!

0
Rich Churcher 30 ago. 2020 a las 09:03