Postgre SQL
发布时间:2022-05-20 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Elixir 用Phoenix,Postgresql和Ecto创建一个书单应用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文通过一个书单应用简要介绍使用Phoenix框架创建一个Web应用程序的基本步骤.
安装Phoenix
1
2
3
4
|
git clone http
s://github.
com/phoenixframework/phoenix.git
cd phoenix
|
创建书单项目
在phoenix源代码目录中运行如下命令创建一个phoenix项目目录结构
1
|
mix phoenix.
new book_store ../book_store
|
目录../book_store不必事先存在,phoenix会自动创建.
添加依赖库
编辑mix.exs文件,修改后如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
defmodule BookStore.@H_11_24@mixfile
do
[
@H_ 772_174@app:
@H_ 772_174@:book_store,
@H_ 772_174@version:
"0.0.1",
@H_ 772_174@elixir:
"~> 1.0",
@H_ 772_174@elixirc_paths: [
"lib", "web"],
@H_ 772_174@compilers: [
@H_ 772_174@:phoenix] ++
@H_11_24 @mix.compilers,
end
# Configuration for the OTP application
#
# Type `mix Help compile.app` for more information
def application
do
[
@H_ 772_174 @mod: {
BookStore, []},
@H_ 772_174@applications: [
@H_ 772_174@:phoenix,@H_ 772_174@:cowboy,@H_ 772_174@:logger,@H_ 772_174@: POSTGRex,@H_ 772_174@:ecto]]
end
# SpecifIEs your project dependencIEs
#
# Type `mix Help deps` for examples and options
defp deps
do
[ {
@H_ 772_174@:phoenix, "0.5.0"},
{
@H_ 772_174@:cowboy, "~> 1.0"},
{
@H_ 772_174@:ecto, "~> 0.2.0"}]
end
end
|
和修改之前的mix.exs文件相比有两个变更处:
- 在application函数中增加了两个依赖的应用程序:POSTGRes和:ecto(16行)
- 在deps函数增加两个依赖库{:POSTGRex,"~> 0.5"}和{:ecto,"~> 0.2.0"}(24,25行)
@H_419_321@
运行
创建一个仓库(Repo)
创建文件web/models/repo.ex,内容如下:
1
2
3
4
5
6
7
8
9
|
defmodule BookStore.Repo
do
use
Ecto.Repo,
@H_ 772_174@adapter:
Ecto.Adapters.POSTGRes
def conf
do
end
def priv
do
app_dir(
@H_ 772_174@:book_store, "priv/repo")
end
end
|
创建数据库:
1
|
createdb book_store -U POSTGRes --enCoding='utf-
8' --locale=en_U s.
UTF-
8 --
template=template0
|
修改lib/book_store.ex为,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
defmodule BookStore
do
use
Application
# See http://elixir-lang.org/docs/stable/elixir/Application.HTML
# for more information on OTP Applications
def start(_type, _args)
do
import
Supervisor.Spec,
@H_ 772_174@warn:
false
children = [
# define workers and child supervisors to be supervised
worker(
BookStore.Repo, [])
]
opts = [
@H_ 772_174@strategy:
@H_ 772_174@:one_for_one,@H_ 772_174@name:
BookStore.Supervisor]
Supervisor.start_link(children,opts)
end
end
|
编译
创建模型
创建文件web/models/books.ex,内容如下:
1
2
3
4
5
6
7
8
9
|
defmodule BookStore.Books
do
use
Ecto.Model
scheR_204_11845@a
"books"
do
end
end
|
创建数据库移植脚本
1
2
3
4
5
|
$ mix ecto.gen.migration Bookstore.Repo create_book
Compiled web
/models/book s.ex
Generated bookstore.app
* crea Ting priv
/repo/migrations
* crea Ting priv
/repo/migrations
/20141112170140_create_book.exs
|
编辑生成的priv/repo/migrations/20141112170140_create_book.exs脚本,内容如下:
defmodule BookStore.Repo.Migrations.CreateBook do use Ecto.Migration def up do ["create table books(\ ID serial priMary key,\ title varchar(125),\ description text,\ author varchar(255),\ publisher varchar(255))",\ "INSERT INTO books(title,description,author,publisher) \ VALUES ( \ 'ProgrAMMing Elixir',\ 'ProgrAMMing Elixir: Functional |> Concurrent |> Pragmatic |> Fun',\ 'Dave Thomas',\ 'The Pragmatic BooksHelf')" ] end def down do "drop table books" end end
运行移植脚本
1
|
@H_571_40 @mix ecto.migrate BookStore.Repo
|
创建查询
创建文件web/models/querIEs.ex,内容如下:
1
2
3
4
5
6
7
8
|
defmodule BookStore.QuerIEs
do
import Ecto.
query
def books_query
do
query =
from book
in BookStore .books,
BookStore.Repo.
all(
query)
end
end
|
配置路由
打开文件web/router.ex,修改为如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
defmodule BookStore.Router
do
use Phoenix.Router
scope
"/"
do
#
Use the
default browser stack.
pipe_through :browser
#
get
"/",BookStore.PageController,:
index,as: :pages
get
"/",BookStore .bookController, as: :books
end
# Other scopes may
use custom stack s.
# scope
"/API"
do
# pipe_through :API
#
end
end
|
创建控制器
创建文件web/controllers/book_controller.ex,内容如下:
1
2
3
4
5
6
7
8
|
defmodule BookStore.BookController
do
use
Phoenix.Controller
def index(conn,_params)
do
books =
BookStore.QuerIEs.books_query
render conn, "index",@H_ 772_174@books: books
end
end
|
创建书单视图
创建文件web/vIEws/book_vIEw.ex,内容如下:
1
2
3
|
defmodule BookStore.BookVIEw
do
use
BookStore.VIEws
end
|
创建目录
1
|
@H_571_40 @mkdir web/templates/book
|
并添加文件web/templates/book/index.HTMl.eex,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<h1>我的图书
</h1>
<table class='table table-bodered table-Striped'>
<thead>
<tr>
<th>#
</th>
<th>标题
</th>
<th>描述
</th>
<th>作者
</th>
<th>出版社
</th>
</tr>
</thead>
<tbody>
<%= for book <- @books do %>
<tr>
<td>
<%= book.ID %>
</td>
<td>
<%= book.title %>
</td>
<td>
<%= book.description %>
</td>
<td>
<%= book.author %>
</td>
<td>
<%= book.publisher %>
</td>
</tr>
<% end %>
</tbody>
</table>
|
启动应用,并刷新页面
1
|
@H_571_40 @mix phoenix.start
|
我的书单应用
完成!
参考资料
- Book LisTing App With Elixir,Phoenix,POSTGRes and Ecto
http://learnelixir.com/blog/2014/10/05/build-web-app-with-elixir/
大佬总结
以上是大佬教程为你收集整理的Elixir 用Phoenix,Postgresql和Ecto创建一个书单应用全部内容,希望文章能够帮你解决Elixir 用Phoenix,Postgresql和Ecto创建一个书单应用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。