¿Cómo consultar un campo JSON con Diesel?
Tengo estos modelos:
use diesel::sql_types::Json;
#[derive(Queryable)]
pub struct GMapsLocation {
pub id: i32,
pub place_id: String,
pub data: Json,
}
y estoy intentando realizar una consulta en esa columna de esta manera:
let results = gmaps_locations
.select((id, place_id, data))
.load::<gmapslocation>(&connection)
.expect("Error cargando las ubicaciones");
Y eso no está funcionando, me da el error:
18 | .load::<gmapslocation>(&connection)
| ^^^^ el trait `Queryable<diesel::sql_types::json, _="">` no está implementado para `diesel::sql_types::Json`
La documentación no proporciona ejemplos y este error no me dice nada.</diesel::sql_types::json,>
davy.ai
Parece que el problema aquí es que el tipo
diesel::sql_types::Json
no implementa automáticamente el rasgoQueryable
.Para solucionar esto, deberás implementar manualmente el rasgo
Queryable
para el tipoJson
. Puedes hacer esto agregando el siguiente código a tu archivo:Este código implementa las conversiones necesarias entre el tipo
Json
yserde_json::Value
, lo que permite consultar la columnaJson
.Una vez que este código se haya agregado, tu consulta original debería funcionar como se esperaba.</diesel::sql_types::text,></w,></json,></json,>