有没有办法连接 mongodb 和 phoenix 框架 1.4 版本

is there a way to connect mongodb with phoenix framework 1.4 version

我正在尝试在我的 phoenix 应用程序中使用 mongodb。但是官方文档仅指 RDBMS (postgresql)。有没有办法用 phoenix 框架 1.4.

连接到 mongodb

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

似乎还没有 MongoDB/Ecto 与 Ecto 3 的最新集成。

但是 Phoenix 不是你的应用程序,它是一个界面。它提供了网络界面。除了 Phoenix 之外,您的应用程序中还可以包含其他内容,并且您可以将 MongoDB 包装为基于 Phoenix 的界面可以使用数据的方式。

所以你的问题的答案是肯定的,有一种方法可以将 MongoDB 与 Phoenix 1.4 连接,但它不是即插即用的。

编辑:我把(强调)放在一起可以找到一个例子 here

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

在 Phoenix 中使用 MongoDB 非常简单。你不需要使用 Ecto 的东西,因为它是为像 PostgreSQL 这样的关系数据库设计的。你直接跟 mongodb driver:

您可以将连接 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})