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.

pq: sintaxis de entrada no válida para el tipo entero: “”

Estaba intentando obtener el valor id de la URL con la ayuda de chi.URLParam, al cual le he asignado el valor de id. Después de obtener el valor de id, quiero realizar una operación de base de datos con ese valor. Por lo tanto, estaba enviando el valor de id a:

d.DB.Query("SELECT * FROM employees WHERE id=$1", id)

pero id devuelve datos nulos, lo cual significa que id:= "".

Handler:

func GetOne(w http.ResponseWriter, r *http.Request) {
    id := chi.URLParam(r, "id")
    fmt.Println("id es:", id)
    slc := data.GetOneEmp(id)
    out, err := json.MarshalIndent(slc, "", "   ")
    if err != nil {
        fmt.Println(err)
    }
    w.Header().Set("Content-Type", "application/json")
    w.Write(out)
}

Función de base de datos:

func GetOneEmp(id int) []m.Employees {
    rows, err := d.DB.Query(`SELECT * FROM employees WHERE id=$1`, id)
    if err != nil {
        fmt.Println(err)
        //return
    }
    var item m.Employees
    var slc []m.Employees
    defer rows.Close()
    for rows.Next() {
        err = rows.Scan(&item.ID, &item.Name, &item.Rank, &item.Address, &item.Salary)
        //mostrar estado también
        if err != nil {
            fmt.Println(err)
            //return en todas partes cuando se obtiene un error
        }
        slc = append(slc, item)
    }
    return slc
}
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener el valor de id de la URL usando chi.URLParam, puedes utilizar el siguiente código:

    id := chi.URLParam(r, "id")

    Después de obtener el valor de id, puedes realizar operaciones en la base de datos con él. En el código proporcionado, se envía id a la función GetOneEmp para obtener los datos del empleado.

    Sin embargo, en este caso, id devuelve datos nulos, lo que significa que se inicializa como una cadena en blanco (id:=” “). Para solucionar este problema, asegúrate de que el valor de id pasado en la URL sea un valor entero.

    Para convertir la cadena de id a un entero, puedes utilizar el paquete strconv de la siguiente manera:

    id, err := strconv.Atoi(chi.URLParam(r, "id"))

    Esto convertirá la cadena de id a un entero y lo asignará a la variable id. Luego, puedes utilizar este valor de id en tu consulta de base de datos para obtener los datos del empleado.

    rows, err := d.DB.Query("SELECT * FROM employees WHERE id=$1", id)

Comments are closed.