SeaORM简介
SeaORM 是一个关系型 ORM,用于帮助你像使用动态语言那样,在 Rust 中构建 Web 服务。实现所需的Trait以及创建并插入测试数据
在使用 SeaORM 之前,需要进行一些初始操作。本章我们将创建数据表、导入初始示例数据以及实现所需的 trait。最后,我们通过查询所有分类列表来验证这些操作是否正常运行。使用 SeaORM 查询数据
本章我们将讨论如何使用 SeaORM 进行查询:查询条件、分页、查询单条记录等。使用 SeaORM 插入数据
本章将讨论如何使用 SeaORM 添加记录。使用 SeaORM 修改数据
本章讨论使用 SeaORM 修改数据使用 SeaORM 删除数据
本章将讨论如何使用 SeaORM 实现删除。使用 SeaORM 操作一对多和多对一关系
正如其名,关系型数据库中的“关系”是很重要的部分。SeaORM 支持常见的数据关系,本章将讨论其中的一对多和多对一关系。SeaORM 的命令行工具和自动迁移
SeaORM 提供了一个命令行工具,可以快速生成实体。同时,还提供了自动迁移功能。SeaORM 操作多对多关系
本章将讨论多对多:一篇文章可以有多个标签,同样的,一个标签可以对应多篇文章。总结与作业
总结与作业
使用 SeaORM 插入数据
- 251107
- 2022-05-31 17:50:37
ActiveModel
代码
pub async fn add(
Extension(state): Extension<Arc<AppState>>,
Form(frm): Form<form::CategoryForm>,
) -> Result<RedirectRespon> {
let handler_name = "category/add";
let conn = get_conn(&state);
let am = category::ActiveModel {
name: Set(frm.name),
..Default::default()
};
let added_category: category::Model = am
.insert(conn)
.await
.map_err(AppError::from)
.map_err(log_error(handler_name))?;
let url = format!("/category?msg=分类添加成功,ID是:{}", added_category.id);
redirect(url.as_str())
}
分析一下这段代码:
Form(frm): Form<form::CategoryForm>
:获取表单输入,该文件位于src/form.rslet am = category::ActiveModel { ... };
:使用表单输入的值构造一个ActiveModel
,其中的Set()
见下文let added_category: category::Model = am.insert(conn)...;
:调用ActiveModel
的insert()
方法,将数据写入到数据库中
Set
⚠️ 提示:千万别忘了 Set
async insert()
:执行数据库的INSERT
操作。
本章代码位于03/插入数据分支