我正在尝试使用带有 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
一起使用。这是一篇解释如何做到这一点的博客文章:
还有另一个库为 Ecto 2
提供 MongoDB
支持,但它在项目的 github 存储库中仍列为 beta
。您可以自行检查是否符合您的使用标准:
关于mongodb - 如何将 Phoenix Framework 与 Mongodb 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42896009/