【问题标题】:is there a way to connect mongodb with phoenix framework 1.4 version有没有办法将mongodb与phoenix framework 1.4版本连接起来
【发布时间】:2018-12-30 05:36:39
【问题描述】:

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

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

【问题讨论】:

    标签: mongodb phoenix-framework ecto


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 感谢您的回复。您能否发布一个关于我们如何与凤凰城的 mongo 交谈的解决方案。我试图查看不同的来源。但是找不到任何东西。非常感谢这方面的任何帮助。
    • 您能否分享任何示例(如果您实现了)演示从 Phoenix 连接 mongodb 的方式。感谢您的宝贵时间。
    • 下班后我看看能不能在这里做点小事。
    • @pindiprolihaitanya 完成了。上面链接了一个小的工作示例。
    • 非常感谢您分享代码并帮助理解。这很有帮助。您的项目让我更好地理解了如何在单独的项目中配置数据库连接,然后将其绑定到主项目。感谢您的时间和支持。
    【解决方案2】:

    在 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]}
    

    worker 以 60 秒的超时和 10 个连接的池大小启动 GenServer。之后你就可以像往常一样使用MongoDB了:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      相关资源
      最近更新 更多