我用的是铁锈
rustc 1.59.0 (9d1b2106e 2022-02-23)
柴油机
diesel = { version = "1.4.8", features = ["postgres","64-column-tables","chrono","serde_json"] }
要在PostgreSQL 13数据库中插入一条记录,我要做的是在插入操作之后获取插入的记录id。这是目前铁锈代码的一部分:
let menu_id = diesel::insert_into(crate::model::diesel::dolphin::dolphin_schema::menu_resource::table)
.values(&new_menu_resource)
.returning(crate::model::diesel::dolphin::dolphin_schema::menu_resource::id)
.on_conflict_do_nothing()
.execute(&connection)
.unwrap();
这是我的
menu_resource
在铁锈中定义:
table! {
menu_resource (id) {
id -> Int4,
name -> Varchar,
res_type -> Int4,
created_time -> Int8,
updated_time -> Int8,
remark -> Nullable<Varchar>,
path -> Varchar,
parent_id -> Int4,
component -> Nullable<Varchar>,
sort -> Int4,
name_zh -> Varchar,
tree_id_path -> Varchar,
code -> Varchar,
}
}
但是最近
menu_id
是
usize
数据类型。为什么要返回
unsize
数据类型不是
i32
?我缺少什么?我该怎么做才能让它返回id
i32
?我在这里关注文档:
https://docs.diesel.rs/diesel/fn.insert_into.html
告诉他可以返回这样的价值观:
let inserted_names = diesel::insert_into(users)
.values(&vec![
name.eq("Diva Plavalaguna"),
name.eq("Father Vito Cornelius"),
])
.returning(name)
.get_results(&connection);
assert_eq!(Ok(vec!["Diva Plavalaguna".to_string(), "Father Vito Cornelius".to_string()]), inserted_names);