问题描述
当使用 Ecto 进行数据库查询时,我们将使用类似 Users.Repo.get!(id)
的东西,这当然有效,但为什么我不需要需要 send/receive
与 {{ 1}} 过程?为什么我可以像引用模块和函数名称一样简单地调用它?
Users.Repo
是一个 OTP 应用程序,其中 Users
将 Users.Application
进程加载为 Users.Repo
进程的子进程
Users.Supervisor
解决方法
Users.Repo
将 Ecto.Repo
注入 use Ecto.Repo
,因此默认 get/3
实现是 delegated 到 Ecto.Repo.Queryable.get/3
,然后下降到 {{3} }.
adapter
反过来已经是一个 adapter.execute/5
并且 execute/5
是一个在后台调用的进程的接口。该抽象级别需要为您封装连接池、超时、错误处理等。