博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ecto中的changeset,schema,struct,map
阅读量:6662 次
发布时间:2019-06-25

本文共 904 字,大约阅读时间需要 3 分钟。

概要

Ecto 中, 对数据库的操作中经常用到 4 个类型:

  • schema
  • changeset
  • struct
  • map

在 Ecto 的 API 中, 基本都是都是对这 4 个类型的操作, 这 4 个类型的关系和互相转换弄清楚, 有助于更好的使用 Ecto 的 API.

schema

schema 定义了数据库中表的结构, 包括表字段名称, 类型, 以及表之间的关系. Ecto 的 API 中, 对哪张表进行操作, 一般都是通过 schema 来确定的.

通过 schema, 就可以明确 API 的操作对象.

changeset

changeset 主要用于更新数据(包括插入, 更新, 删除). changeset 详细记录了和数据库的变化有哪些.

使用 Ecto.Changeset 中的 API, 可以将一个 struct 或者 map 转变为 changeset, 然后就可以更新数据库中的数据了.

struct

struct 可以理解为实例化的 shema struct 的类型一般都是由 schema 定义的, 也就是 struct 中的字段都是对应的 schema 中定义的.

struct 也可以像 changeset 那样, 用于更新数据库的操作. 但是更多的是用在接收查询, 或者更新数据库(insert, update, delete)之后的结果.

map

map 其实就是 elixir 中的 map 类型, 有了 struct, 为什么还要 map 呢? 因为对外提供接口的时候, 需要序列化数据后再传输, 此时, struct 的类型是不重要的, 只要其中的数据就可以了.

总结

简单来说, 在 Ecto 内部, 只需用到 changeset, struct, schema, 其中, changeset 用来操作具体的数据库, struct 用于接收数据库操作(即 增删改查)的结果, schema 用来定义 struct 的类型.

至于 map, 用来和外部交互数据.

转载于:https://www.cnblogs.com/wang_yb/p/10673858.html

你可能感兴趣的文章
Handtrack.js 开源:3行JS代码搞定手部动作跟踪
查看>>
基于Webpack 2的React组件懒加载
查看>>
Windows原生运行Linux的技术细节
查看>>
Linus 发文宣布Linux Kernel 5.0 正式发布
查看>>
Rust 1.27支持SIMD
查看>>
跳一跳作弊器上榜!GitHub 2018年十大新开源项目揭晓
查看>>
使用Flutter之后,我们的CPU占用率降了50%
查看>>
聚焦最新技术热点,沉淀最优技术实践,QCon北京2018全新开启!
查看>>
打造具备互补测试技能的团队
查看>>
Hazelcast加入Eclipse基金会
查看>>
torch中实现自定义层
查看>>
iOS10 新特性适配Label显示不全问题
查看>>
y-a-b-e
查看>>
420. Count and Say
查看>>
clang-tidy——静态代码分析框架
查看>>
【译】css动画里的steps()用法详解
查看>>
微信支付 一步一个坑的APP支付!
查看>>
Spring Cloud实战(二)-Spring Cloud Eureka
查看>>
节操,代码,修养,妹子和其他(Go语言版)
查看>>
Sublime Text3配置使用教程整理
查看>>