有没有办法将mongodb与phoenix Framework 1.4版本连接

时间:2018-12-30 05:36:39

标签: mongodb phoenix-framework ecto

我正在尝试在我的凤凰应用程序中使用mongodb。但是官方文档仅指RDBMS(PostgreSQL)。有没有一种方法可以通过phoenix framework 1.4连接到mongodb。

我正在尝试在phoenix中构建一个具有非结构化数据的应用程序。我从ECTO mongodb的文档中看到了旧版本。对于phoenix的1.4版本,未指定任何选项。

2 个答案:

答案 0 :(得分:0)

似乎还没有与Ecto 3保持同步的MongoDB / Ecto集成。

但是Phoenix不是您的应用程序,它是一个接口。它提供了Web界面。除了Phoenix之外,您还可以在应用程序中拥有其他功能,并且可以以基于Phoenix的接口可以使用数据的方式包装MongoDB。

因此,您的问题的答案是肯定的,有一种方法可以将MongoDB与Phoenix 1.4连接起来,但这不是即插即用的方式。

编辑:我把一个例子(重点放在抛出)放在一起(可以找到here

Some data in mongo Data in the Phoenix App enter image description here

基本上,它涉及两个应用程序:一个是普通的elixir应用程序,它只是mongodb 0.4.7并包装了一些功能。另一个是使用上述mongodb包装器应用程序的凤凰应用程序。必须使用mix phx.new --no-ecto创建Phoenix应用程序,表面上您可以将其作为一个应用程序来完成,但这给了您更多的回旋余地。

答案 1 :(得分:0)

在Phoenix中使用MongoDB非常简单。您不需要使用Ecto东西,因为它是为关系数据库(如PostgreSQL)设计的。您直接与mongodb驱动程序对话:

您可以将连接URL放入Phoenix应用程序的配置环境(例如config.ex)中:


config :app, :mongodb,
   url: "mongodb://localhost:27017,localhost:27018,localhost:27019/my_database?replicaSet=my_replica_set"

URL指定了三个节点的副本集。

application.ex中,您添加了一个这样的工作器:

旧样式:

worker(Mongo, [[name: :mongo, url: Application.get_env(:app, :mongodb)[:url], timeout: 60_000, pool_size: 10]])

需要的样式:

{Mongo, [name: :mongo, url: Application.get_env(:app, :mongodb)[:url], timeout: 60_000, pool_size: 10]}

工作程序以60秒的超时和10个连接的池大小启动GenServer。之后,您可以照常使用MongoDB:

Mongo.find(:mongo, "accounts", %{"email" => the_email})