Ecto 应用开发:数据操作、架构优化与项目组织
1. 数据插入与更新的替代方案
当对值执行 replace_all 操作不起作用时,可采用以下几种方法确保返回的数据与数据库中的数据匹配:
1. 使用 returning 选项 :指定要读回的字段列表。若希望读取所有字段,可提供 true 而非列表。
2. 在定义架构时添加 read_after_writes :使用 field 函数定义架构时,可为任何希望读回的字段添加 read_after_writes: true 。需注意,这将影响所有操作,而非仅影响插入更新操作(upserts)。
3. 单独查询记录 :使用单独的查询从数据库中获取记录。
若以上选项都不合适,可考虑使用 insert_all 而非 insert 来执行插入更新操作。使用架构可能并非实现目标的最佳方法,若感觉操作过于复杂,可考虑其他方式。
插入更新操作(upserts)在数据加载过程(如插入 CSV 文件内容)中是一种很好的选择,前提是数据源至少有一列具有唯一索引。但如果唯一列是主键,插入更新操作可能不是正确的选择,因为主键不太可能出现在 CSV 文件中。
2. 分离纯代码与非纯代码
在函数式编程中,一个关键原则是尽可能将代码编写为纯函数
超级会员免费看
订阅专栏 解锁全文
44

被折叠的 条评论
为什么被折叠?



