#postgresql #rust #serde #r2d2
#postgresql #Ржавчина #serde #r2d2
Вопрос:
Я использую r2d2_postgres
для запуска необработанного SQL и возврата результата непосредственно в ответе Actix.
Мне нужно запустить необработанный sql с динамическими данными, типами и неизвестными во время компиляции столбцами / типами данных и т. Д. Чтобы сделать это, я наткнулся serde_json::value::RawValue
:
В нем говорится: «Значение rawValue можно использовать для отсрочки синтаксического анализа частей полезной нагрузки на более поздний срок или для того, чтобы вообще избежать ее синтаксического анализа в случае, если часть полезной нагрузки просто нужно передать дословно в другой выходной объект».
https://docs.serde.rs/serde_json/value/struct .RawValue.html
Я в принципе хочу вообще не разбирать его и просто отправить его клиенту Actix.
Вот мой код:
let mut conn = pool.get().expect("Couldn't get db connection from pool");
let result = web::block(move || conn.query("select jsonb_agg(t) from (select * from useraccountview) t",amp;[]))
.await;
match result {
Ok(result) => {
let foo : serde_json::value::RawValue = result[0].get(0);
HttpResponse::Ok().content_type("application/json").json(foo)
},
Err(e) => HttpResponse::NotAcceptable().body(e.to_string())
}
Это дает мне 2 ошибки:
error[E0277]: the trait bound `serde_json::value::RawValue: FromSql<'_>` is not satisfied
--> src/main.rs:188:63
|
188 | let foo : serde_json::value::RawValue = result[0].get(0);
| ^^^ the trait `FromSql<'_>` is not implemented for `serde_json::value::RawValue`
error[E0277]: the size for values of type `str` cannot be known at compilation time
--> src/main.rs:188:17
|
188 | let foo : serde_json::value::RawValue = result[0].get(0);
| ^^^ doesn't have a size known at compile-time
Я очень новичок в Rust, поэтому, вероятно, мне не хватает какой-то концепции о том, как это исправить.
Комментарии:
1. Должен быть в состоянии использовать
Json
<amp;RawValue>
или что-то в этом роде