设为首页 加入收藏

TOP

phoenix 开发API系列(三)phoenix api 结合数据库(二)
2017-10-09 13:27:24 】 浏览:1944
Tags:phoenix 开发 API 系列 api 结合 数据库
:11:28.960 [debug] QUERY OK db=3.4ms DELETE FROM "users" WHERE "id" = $1 [3] {:ok, %EctoSample.User{__meta__: #Ecto.Schema.Metadata<:deleted, "users">, age: nil, id: 3, inserted_at: nil, name: nil, password: nil, updated_at: nil}}

补充说明

除了修改上面的文件之外,还有下面2个地方需要修改,否则 EctoSample 模块不会加载:

# vi lib/ecto_sample.ex
defmodule EctoSample do
  use Application

  def start(_type, _args) do
    import Supervisor.Spec, warn: false

    children = [
      worker(EctoSample.Repo, []),
    ]
    opts = [strategy: :one_for_one, name: EctoTest.Supervisor]
    Supervisor.start_link(children, opts)
  end
end
def application do
  [applications: [:logger, :postgrex, :ecto],
   mod: {EctoSample, []}]   # <=== IMPORTANT !!!
end

api with postgresql

postgresql 安装与配置

以下安装配置是基于 CentOS7 的

# 安装 package
$ sudo yum install postgresql-server

# init db
$ sudo su - postgres
$ initdb -D /var/lib/pgsql/data

# start db
$ sudo systemctl start postgresql

# create user and database
$ sudo su - postgres
$ psql -U postgres -W       # password is also "postgres"
postgres=# CREATE USER iotalab WITH PASSWORD 'iotalab';
postgres=# CREATE DATABASE test OWNER iotalab ENCODING 'UTF8';

设置可以局域网内访问

$ sudo su - postgres 
$ cd /var/lib/pgsql/data

vim pg_hba.conf

host    all             all             0.0.0.0/0            md5

vim postgresql.conf

listen_addresses = '*'

远程连接不上时试试禁用 iptables

$ sudo systemctl stop iptables

创建 数据库和表

  1. 给这个工程加上 数据库的支持 其实创建的工程的时候,默认就是支持数据库的。但是前面的示例不需要数据库,所以创建这个工程的时候用了 –no-ecto 的参数。 重新创建工程,并将已写的代码复制进去即可,这次创建工程时不加 –no-ecto 参数。

    $ mix phoenix.new phoenix_api
  2. 配置数据库连接并创建数据库 修改文件 config/dev.exs

    # Configure your database
    config :phoenix_api, PhoenixApi.Repo,
      adapter: Ecto.Adapters.Postgres,
      username: "iotalab",
      password: "iotalab",
      database: "dev_db",
      hostname: "localhost",
      pool_size: 10

    创建数据库

    $ mix ecto.create
  3. 创建一张用来测试的表

    $ mix phoenix.gen.model User users name:string email:string age:integer
    * creating web/models/user.ex
    * creating test/models/user_test.exs
    * creating priv/repo/migrations/20160913230129_create_user.exs

    查看生成的文件,已经根据命令行的中参数,生成了对应的对象,可以发现其中自动添加了 timestamps 方法,这个方法是自动添加一些 updated_at, inserted_at 等通用时间字段。 然后通过命令行创建表:

    $  mix ecto.migrate
    
    07:10:52.527 [info]  == Running PhoenixApi.Repo.Migrations.CreateUser.change/0 forward
    
    07:10:52.527 [info]  create table users
    
    07:10:52.537 [info]  == Migrated in 0.0s

增删改查 示例

在测试代码中构造了 增删改查 的测试 case,然后用 mix test 命令来进行测试。 具体代码可以参考:http://git.oschina.net/wangyubin/phoenix-api/blob/master/test/models/user_test.exs

总结

利用 ecto 模块,操作数据库非常简单,但是,写岀优秀 api 的关键还是在于 api 的设计上,学习这个框架的意义是在于把一些通用繁琐的工作交给框架来处理,可以让我们把主要的精力放在业务代码的构建上。

至此,phoenix framework api 系列的3篇也结束了。

来源:http://blog.iotalabs.io/

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇python征程1.4(初识python) 下一篇Elixir 单元测试

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目