Elixir phoenix - 관계를 사용하여 Ecto 스키마를 json으로 렌더링
7312 단어 elixir
OnPoint에서 프로젝트 작업을 하는 동안 이 작업을 더 쉽게 수행하는 데 도움이 되는 작은 모듈을 빌드했습니다.
해당 모듈을 추출하고
JsonView
라는 패키지로 릴리스했습니다. 소스 코드는 github에서 호스팅됩니다.https://github.com/bluzky/json_view
Phoenix.View와 함께 사용하거나 독립적으로 사용할 수 있습니다. 데이터를 조작하고 렌더링 연결을 자동으로 처리하는 데 도움이 됩니다.
작성하는 방법에 대한 기사를 게시했습니다.
한 번 보자.
먼저 보기 모듈 정의
defmodule MyApp.UserView do
use JsonView
def render("user.json", %{user: user}) do
render_json(user, [:first_name, :last_name, :vatar], [], [])
end
end
defmodule MyApp.PostView do
use JsonView
# define which fields return without modifying
@fields [:title, :content, :excerpt, :cover]
# define which fields that need to format or calculate, you have to define `render_field/2` below
@custom_fields [:like_count]
# define which view used to render relationship
@relationships [author: MyApp.UserView]
def render("post.json", %{post: post}) do
# 1st way if `use JsonView`
render_json(post, @fields, @custom_fields, @relationships)
end
def render_field(:like_count, item) do
# load like_count from some where
end
end
그런 다음 사용하십시오.
post = %Post{
title: "Hello JsonView",
excerpt: "Now you can render Json easier",
content: "Install and put it to work",
cover: nil,
inserted_at: ~N[2021-07-05 00:00:00],
updated_at: ~N[2021-07-09 00:00:00],
author: %User{
first_name: "Daniel",
last_name: "James",
email: "[email protected]",
avatar: nil,
inserted_at: ~N[2021-06-30 00:00:00]
updated_at: ~N[2021-07-02 00:00:00]
}
}
MyApp.PostView.render("post.json", %{post: post})
# or invoke from PostController
render(conn, "post.json", post: post)
이것은 PhoenixController에서 반환하는 데 사용할 수 있는 결과입니다.
%{
title: "Hello JsonView",
excerpt: "Now you can render Json easier",
content: "Install and put it to work",
cover: nil,
like_count: nil,
author: %{
first_name: "Daniel",
last_name: "James"
}
}
의견이 있으시면 댓글 또는 create an issue .
다음 포스트에서는 이 라이브러리를 작성하는 방법을 단계별로 살펴보겠습니다.
Reference
이 문제에 관하여(Elixir phoenix - 관계를 사용하여 Ecto 스키마를 json으로 렌더링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/onpointvn/elixir-phoenix-render-ecto-schema-to-json-with-relationships-3blj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)