2017-03-20 37 views
0

我試圖用鳳凰框架,MongoDB的數據庫,所以我運行下面的命令即可開始如何使用Mongodb工作Phoenix Framework?

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} 

我該如何開始?

回答

1

這裏的問題是,mongodb_ecto還沒有更新過一段時間,因此不支持更新版本的Ecto(v2.0及以上版本),這正是鳳凰目前使用的版本。這會導致mix deps.get失敗,因爲它無法解決依賴關係。

這裏的一個解決方案是直接使用MongoDB driver for Elixir而不是mongodb_ecto,並將其配置爲在Phoenix應用程序中使用Ecto。這裏是一個博客文章,解釋瞭如何做到這一點:

Phoenix with Ecto and MongoDB


也還有另外一個庫,提供了Ecto 2MongoDB的支持,但它仍被列爲beta對項目的GitHub的倉庫。你可以檢查自己,如果它符合您的使用標準:

eyrmedical/mongo_ecto

+0

如果我降低Ecto 2.0以下有什麼弊端? –

+0

您將失去大量新功能,並且很有可能該應用程序可能無法正確使用與Ecto一起工作的其他庫的最新版本。參見[Ecto's Changelog](https://github.com/elixir-ecto/ecto/blob/master/CHANGELOG.md)。 – Sheharyar

相關問題