如何使用 Phoenix Framework 和 Mongodb?
How to work Phoenix Framework with Mongodb?
我正在尝试使用带有 mongodb 的 phoenix 框架作为数据库,所以我 运行 以下命令开始
mix phoenix.new helloworld --database mongodb
我的 mix.exs
文件如下所示:
defp deps do
[{:phoenix, "~> 1.2.1"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.0"},
{:mongodb_ecto, ">= 0.0.0"},
{:phoenix_html, "~> 2.6"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"}]
end
但是当我 运行 mix deps.get
时,我得到以下错误:
Failed to use "ecto" (versions 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.1.0, 2.1.1, 2.1.2, 2.1.3, 2.1.4) because
mongodb_ecto (versions 0.1.0 to 0.1.2) requires ~> 1.0
phoenix_ecto (version 3.0.1) requires ~> 2.0
Failed to use "ecto" (versions 2.0.0-beta.0 to 2.0.6) because
mongodb_ecto (versions 0.1.0 to 0.1.2) requires ~> 1.0
phoenix_ecto (version 3.0.0) requires ~> 2.0.0-rc
Failed to use "ecto" (version 2.0.6) because
mongodb_ecto (versions 0.1.3 to 0.1.5) requires ~> 1.0.0
phoenix_ecto (version 3.0.0) requires ~> 2.0.0-rc
Failed to use "ecto" (versions 2.1.0 to 2.1.4) because
mongodb_ecto (versions 0.1.0 to 0.1.2) requires ~> 1.0
phoenix_ecto (versions 3.1.0 to 3.2.3) requires ~> 2.1
Failed to use "ecto" (version 2.1.4) because
mongodb_ecto (versions 0.1.3 to 0.1.5) requires ~> 1.0.0
phoenix_ecto (version 3.0.1) requires ~> 2.0
Failed to use "ecto" (version 2.1.4) because
mongodb_ecto (versions 0.1.3 to 0.1.5) requires ~> 1.0.0
phoenix_ecto (versions 3.1.0 to 3.2.3) requires ~> 2.1
** (Mix) Hex dependency resolution failed, relax the version requirements of your dependencies or unlock them (by using mix deps.update or mix deps.unlock). If you are unable to resolve the conflicts you can try overriding with {:dependency, "~> 1.0", override: true}
我如何开始?
这里的问题是 mongodb_ecto
已经有一段时间没有更新了,因此不支持更新版本的 Ecto
(v2.0 及更高版本),这正是 Phoenix 所支持的目前正在使用。这会导致 mix deps.get
失败,因为它无法解析依赖项。
此处的一个解决方案是直接使用 MongoDB driver for Elixir 而不是 mongodb_ecto
并将其配置为在 Phoenix 应用程序中与 Ecto
一起使用。这是一篇博客 post,它解释了如何做到这一点:
还有另一个库为 Ecto 2
提供 MongoDB
支持,但它在项目的 github 存储库中仍列为 beta
。是否符合您的使用标准,您可以自行查看:
我正在尝试使用带有 mongodb 的 phoenix 框架作为数据库,所以我 运行 以下命令开始
mix phoenix.new helloworld --database mongodb
我的 mix.exs
文件如下所示:
defp deps do
[{:phoenix, "~> 1.2.1"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.0"},
{:mongodb_ecto, ">= 0.0.0"},
{:phoenix_html, "~> 2.6"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"}]
end
但是当我 运行 mix deps.get
时,我得到以下错误:
Failed to use "ecto" (versions 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.1.0, 2.1.1, 2.1.2, 2.1.3, 2.1.4) because
mongodb_ecto (versions 0.1.0 to 0.1.2) requires ~> 1.0
phoenix_ecto (version 3.0.1) requires ~> 2.0
Failed to use "ecto" (versions 2.0.0-beta.0 to 2.0.6) because
mongodb_ecto (versions 0.1.0 to 0.1.2) requires ~> 1.0
phoenix_ecto (version 3.0.0) requires ~> 2.0.0-rc
Failed to use "ecto" (version 2.0.6) because
mongodb_ecto (versions 0.1.3 to 0.1.5) requires ~> 1.0.0
phoenix_ecto (version 3.0.0) requires ~> 2.0.0-rc
Failed to use "ecto" (versions 2.1.0 to 2.1.4) because
mongodb_ecto (versions 0.1.0 to 0.1.2) requires ~> 1.0
phoenix_ecto (versions 3.1.0 to 3.2.3) requires ~> 2.1
Failed to use "ecto" (version 2.1.4) because
mongodb_ecto (versions 0.1.3 to 0.1.5) requires ~> 1.0.0
phoenix_ecto (version 3.0.1) requires ~> 2.0
Failed to use "ecto" (version 2.1.4) because
mongodb_ecto (versions 0.1.3 to 0.1.5) requires ~> 1.0.0
phoenix_ecto (versions 3.1.0 to 3.2.3) requires ~> 2.1
** (Mix) Hex dependency resolution failed, relax the version requirements of your dependencies or unlock them (by using mix deps.update or mix deps.unlock). If you are unable to resolve the conflicts you can try overriding with {:dependency, "~> 1.0", override: true}
我如何开始?
这里的问题是 mongodb_ecto
已经有一段时间没有更新了,因此不支持更新版本的 Ecto
(v2.0 及更高版本),这正是 Phoenix 所支持的目前正在使用。这会导致 mix deps.get
失败,因为它无法解析依赖项。
此处的一个解决方案是直接使用 MongoDB driver for Elixir 而不是 mongodb_ecto
并将其配置为在 Phoenix 应用程序中与 Ecto
一起使用。这是一篇博客 post,它解释了如何做到这一点:
还有另一个库为 Ecto 2
提供 MongoDB
支持,但它在项目的 github 存储库中仍列为 beta
。是否符合您的使用标准,您可以自行查看: