sql >> Base de Datos >  >> RDS >> PostgreSQL

panic:sql:se esperaban 1 argumentos de destino en Scan, no golang, pq, sql

La consulta devuelve un campo por fila. El código está buscando tres. Tal vez quieras algo como:

err := db.QueryRow("SELECT data->>'id', data->>'type', data->>'title' FROM message WHERE data->>'id'=$1", id).Scan(m.Id, m.Type, m.Title)

Además, pase punteros a los valores:

err := db.QueryRow("SELECT data->>'id', data->>'type', data->>'title' FROM message WHERE data->>'id'=$1", id).Scan(&m.Id, &m.Type, &m.Title)

Otra opción es obtener los datos como un solo campo y decodificar el resultado con el paquete encoding/json.

var p []byte
err := db.QueryRow("SELECT data FROM message WHERE data->>'id'=$1", id).Scan(&p)
if err != nil {
    // handle error
}
var m Message
err := json.Unmarshal(p, &m)
if err != nil {
    // handle error
}