代码之家  ›  专栏  ›  技术社区  ›  jupiar

为什么exto.Repo进程不需要“发送/接收”?

  •  1
  • jupiar  · 技术社区  · 5 年前

    Users.Repo.get!(id) ,这当然有效,但我为什么要这样做 需要 send/receive 沟通 Users.Repo

    Users 是OTP应用程序,其中 Users.Application 用户、回购 进程作为子进程加载到 Users.Supervisor

      ...
    
      def start(_type, _args) do
        children = [
          Users.Repo,
        ]
        opts = [strategy: :one_for_one, name: Users.Supervisor]
        Supervisor.start_link(children, opts)
      end
    
    1 回复  |  直到 5 年前
        1
  •  3
  •   Aleksei Matiushkin    5 年前

    Users.Repo 得到 Ecto.Repo use Ecto.Repo 因此违约 get/3 delegated Ecto.Repo.Queryable.get/3 然后是 adapter.execute/5 .

    adapter GenServer execute/5 是在后台调用的进程的接口。这个抽象级别是为您封装连接池、超时、错误处理等所必需的。