Har*_*han 2 elixir mongodb ecto phoenix-framework
我正在尝试使用phoenix框架和mongodb作为数据库,所以我运行以下命令来开始
mix phoenix.new helloworld --database mongodb
Run Code Online (Sandbox Code Playgroud)
我的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
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时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}
Run Code Online (Sandbox Code Playgroud)
我该如何开始?
这里的问题是mongodb_ecto在很长一段时间内没有更新,因此不支持Ecto凤凰目前正在使用的新版本(v2.0及更高版本).这会导致mix deps.get失败,因为它无法解析依赖关系.
这里的一个解决方案是直接使用Elixir的MongoDB驱动程序,而不是mongodb_ecto将其配置为Ecto在Phoenix应用程序中使用.这是一篇博客文章,解释了如何做到这一点:
还有另一个提供MongoDB支持的库Ecto 2,但它仍然列beta在项目的github存储库中.如果符合您的使用标准,您可以自行检查:
| 归档时间: |
|
| 查看次数: |
2132 次 |
| 最近记录: |