Pau*_*iro 18 elixir rethinkdb ecto phoenix-framework
刚到Elixir/Phoenix我想使用RethinkDB而不是PostgreSQL,但我只在PostgreSQL上找到文档/示例(它似乎是默认/官方数据库).Hamiltop(Rethinkdb-elixir)提供了一个非常好的软件包,但遗憾的是Wiki中的文档还没有准备就绪,而自述文件对我来说还不够.我绝对不想使用SQL(我来自使用Meteor/MongoDB,其中数据库不是问题).谁能告诉我一个我需要的代码的简单示例:
这可能听起来很傻但是Meteor为我们照顾这些,现在这对我来说是一个问题...因为我无法正确地做到这一点.谢谢!
Gaz*_*ler 23
步骤1)在没有ecto的情况下生成项目:
mix phoenix.new some_app --no-ecto
Run Code Online (Sandbox Code Playgroud)
步骤2)添加rethinkdb作为依赖项 mix.exs
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
Run Code Online (Sandbox Code Playgroud)
第3步)运行 mix deps.get
步骤4)创建数据库:
defmodule SomeApp.Database do
use RethinkDB.Connection
end
Run Code Online (Sandbox Code Playgroud)
步骤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
Run Code Online (Sandbox Code Playgroud)
步骤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
Run Code Online (Sandbox Code Playgroud)
请注意:我将查询放在PageController中只是为了便于运行.在一个真实的例子中,这些将在单独的模块中 - 可能是代表您的资源的模块.
另外需要注意的是我在控制器上内联创建表.您可以执行该命令在文件中创建表格,priv/migrations/create_people.exs然后运行它mix run priv/migrations/create_people.exs