首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在RethinkDB框架中使用RethinkDB?

如何在RethinkDB框架中使用RethinkDB?
EN

Stack Overflow用户
提问于 2015-07-16 23:05:02
回答 1查看 1.9K关注 0票数 18

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

  1. 连接到服务器/管理基本的CRUD操作。

这听起来可能很愚蠢,但是因为流星为我们解决了这些问题,现在这是me...because的一个问题,我不能这么做,properly.Thanks!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-16 23:33:26

步骤1)生成不带ecto的工程:

代码语言:javascript
复制
mix phoenix.new some_app --no-ecto

步骤2)在mix.exs中添加rethinkdb作为依赖项

代码语言:javascript
复制
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)创建数据库:

代码语言:javascript
复制
defmodule SomeApp.Database do
  use RethinkDB.Connection
end

步骤5)将其添加到lib/some_app.ex中的监督树- name应与上面的数据库模块(SomeApp.Database)匹配

代码语言:javascript
复制
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)执行查询:

代码语言:javascript
复制
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中。在一个真实的例子中,它们应该在单独的模块中--也许是一个代表你的资源的模块。

另一件需要注意的事情是,我在控制器上创建了内联的表。您可以执行该命令在priv/migrations/create_people.exs等文件中创建表,并使用mix run priv/migrations/create_people.exs运行该表

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31457945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档