Vec<Bookable>
ディーゼル ライブラリを使用して、データベースにクエリを実行し、構造体を取得しています。
#[derive(QueryableByName)]
pub struct Bookable {
#[sql_type = "BigInt"]
pub id: i64,
#[sql_type = "Text"]
pub title: String
}
要素をクエリすると、結果にアクセスできますが、マクロに変換することはできませんVec<Bookable>
。json!
pub fn get_terms(conn: &MysqlConnection) -> Vec<Bookable> {
diesel::sql_query(r#"SELECT title, LAST_INSERT_ID() 'id' from bookable_term;"#)
.load::<Bookable>(conn).expect("Query failed")
}
そして後で私はそれをこのように呼びます:
let conn = connect();
let terms = bookable::get_terms(&conn);
json!({ "data": {
"items": terms }
})
問題は、用語をこのオブジェクトに入れ、配列全体を API に送信する方法です。次のように json を文字列化できます。
"items:" &vec!["to", "be", "or", "not", "to", "be"]
しかし、既存の Vec に関しては、コンパイラ エラーが発生します。私は使用してRocket
いるので、マクロrocket_contrib::json::JsonValue
を保持するjson!