Как работать с Phoenix Framework с Mongodb?
Я пытаюсь использовать феникс фреймворк с mongodb в качестве базы данных, поэтому я запускаю следующую команду, чтобы начать
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 и выше), что в настоящее время использует Phoenix. Это вызывает mix deps.get
потерпеть неудачу, так как не может разрешить зависимости.
Одним из решений здесь является прямое использование драйвера MongoDB для Elixir вместо mongodb_ecto
и настроить его для работы с Ecto
в вашем приложении Феникс. Вот запись в блоге, которая объясняет, как вы можете это сделать:
Есть также еще одна библиотека, которая предлагает MongoDB
Поддержка для Ecto 2
, но он все еще указан как beta
в репозитории проекта github. Вы можете сами проверить, соответствует ли оно вашим критериям использования: