如何在Phoenix应用程序启动时预先填充数据库?

Pau*_*iro 12 elixir ecto phoenix-framework

我有这个架构:

schema "editables" do
    field :title, :string 
    field :content, :binary
   timestamps
end
Run Code Online (Sandbox Code Playgroud)

我希望在应用程序启动时自动创建和填充几行,说我想创建:title包含以下字段的6个条目:page1,page2,......我应该这样做吗?

Jos*_*lim 20

我的建议:创建一个将填充数据库的脚本文件.我们称之为priv/repo/seeds.exs:

alias MyApp.Repo
Repo.insert! %MyApp.Data{...}
Repo.insert! %MyApp.Data{...}
Run Code Online (Sandbox Code Playgroud)

在开发中,您可以将其作为

mix run priv/repo/seeds.exs
Run Code Online (Sandbox Code Playgroud)

或在生产中需要时:

MIX_ENV=prod mix run priv/repo/seeds.exs
Run Code Online (Sandbox Code Playgroud)

每次应用程序启动时,我都看不出您有任何理由这样做.想象一下,您在开发,测试或生产中运行的每个命令现在都需要支付在数据库中创建数据的代价.这不是一个好主意.

  • 对你来说是一个重要的UAU,克里斯和团队的其他成员.我很惊讶,因为解决方案已经在项目文件中已经存在(我以前从未研究过它......)并且文档非常棒,链接到定义允许新手理解它们!深深的欣赏. (2认同)