用途:该技能用于在 Elixir 中掌握 Ecto(数据库封装与查询生成器),构建数据库驱动的应用,涵盖 schema、changeset、查询、关联与事务。
主要能力:定义 schema 与字段类型(含 Ecto.Enum、数组字段、时间戳);用 changeset 做 cast、必填、格式、数值、长度校验及唯一/外键约束;编写基础与复杂查询(where、select、order_by、limit/offset、管道组合、动态过滤);关联与预加载(preload、嵌套预加载、自定义预加载查询、join);聚合与分组(count、avg、sum、max、group_by、having);插入、更新、update_all、删除、delete_all;事务(Repo.transaction 与 Ecto.Multi);嵌入式 schema(embeds_one、cast_embed);自定义 Ecto.Type(cast/dump/load)。
使用方式:在 Elixir 项目中按示例定义模块与函数,通过 Repo 执行查询与写入,例如 Repo.all(User)、Repo.get(User, 1)、Repo.insert/update/delete、Repo.transaction(fn -> ... end)。
适用场景:构建带数据库访问的 Elixir/Phoenix 应用,设计数据模型与校验层,处理关联数据与多步事务,连接 PostgreSQL、MySQL 等数据库。
限制与注意:资料未提供安装命令、版本要求、收费或平台信息。常见问题包括未预加载导致 N+1 查询、遗漏必填校验、相关操作未用事务、硬编码查询、忽略数据库约束、changeset 错误处理不当、外键缺索引等。建议始终用 changeset 校验、预加载关联、用事务与 Ecto.Multi 保证一致性、保持 schema 聚焦、为常用查询字段建索引。