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
}
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)