gpt4 book ai didi

elixir - 如何将 RethinkDB 与 Phoenixframework 一起使用?

转载 作者:行者123 更新时间:2023-12-03 13:29:57 26 4
gpt4 key购买 nike

刚到 Elixir/Phoenix 我想​​使用 RethinkDB 而不是 PostgreSQL,但我只在 PostgreSQL 上找到文档/示例(这似乎是默认/官方数据库)。 Hamiltop (Rethinkdb-elixir) 提供了一个非常好的软件包,但不幸的是 Wiki 中的文档还没有准备好,而自述文件中的文档对我来说还不够。
我绝对不想使用 SQL(我来自使用 Meteor/MongoDB,其中数据库不是问题)。
谁能给我看一个我需要的代码的简单示例:

  • 连接到 RethinkDB;
  • 启动服务器/管理服务器/连接;
  • 创建数据库/表;
  • 执行基本的 CRUD 操作。

  • 这听起来可能很愚蠢,但由于 Meteor 为我们处理了这些,现在这对我来说是个问题......因为我无法正确地做到这一点。谢谢!

    最佳答案

    步骤 1) 生成没有 ecto 的项目:

    mix phoenix.new some_app --no-ecto

    步骤 2) 在 mix.exs 中添加 rethinkdb 作为依赖项
    defp deps do
    [{:phoenix, "~> 0.13.1"},
    {:phoenix_html, "~> 1.0"},
    {:phoenix_live_reload, "~> 0.4", only: :dev},
    {:rethinkdb, "~> 0.0.5"},
    {:cowboy, "~> 1.0"}]
    end

    步骤 3) 运行 mix deps.get
    步骤 4) 创建数据库:
    defmodule SomeApp.Database do
    use RethinkDB.Connection
    end

    步骤 5) 将其添加到 lib/some_app.ex 中的监督树中- name应该与上面的数据库模块匹配( SomeApp.Database )
    def start(_type, _args) do
    import Supervisor.Spec, warn: false

    children = [
    # Start the endpoint when the application starts
    supervisor(SomeApp.Endpoint, []),
    worker(RethinkDB.Connection, [[name: SomeApp.Database, host: 'localhost', port: 28015]])
    # Here you could define other workers and supervisors as children
    ]

    # See http://elixir-lang.org/docs/stable/elixir/Supervisor.html
    # for other strategies and supported options
    opts = [strategy: :one_for_one, name: Rethink.Supervisor]
    Supervisor.start_link(children, opts)
    end

    步骤 6) 执行查询:
    defmodule Rethink.PageController do
    use Rethink.Web, :controller
    use RethinkDB.Query

    plug :action

    def index(conn, _params) do
    table_create("people")
    |> SomeApp.Database.run
    |> IO.inspect

    table("people")
    |> insert(%{first_name: "John", last_name: "Smith"})
    |> SomeApp.Database.run
    |> IO.inspect

    table("people")
    |> SomeApp.Database.run
    |> IO.inspect
    render conn, "index.html"
    end
    end

    请注意:我将查询放在 PageController 中只是为了便于运行。在一个真实的例子中,这些将位于单独的模块中 - 也许一个代表您的资源。

    另一件需要注意的是,我正在 Controller 上创建内联表。您可以执行命令在文件中创建表,例如 priv/migrations/create_people.exs并使用 mix run priv/migrations/create_people.exs 运行它

    关于elixir - 如何将 RethinkDB 与 Phoenixframework 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31457945/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com