Chuẩn hoá và validate dữ liệu trong Phoenix với thư viện Tarams
Trong bài viết này, mình sẽ hướng dẫn một cách ngắn và đơn giản hơn bằng cách sử dụng thư. Thư viện này thực ra là sử dụng lại
Ecto.Changeset
nhưng nó giúp cho chúng ta không phải lặp lại quánhi codeMột vài tính năng thú vị của Tarams:
Sau đây là cách sử dụng
Ecto.Changeset
. Ví dụ chúng ta đang viết API để cập nhật 프로필 của nhân viên. 예우 까우 라email: bắt buộc, đúng định dạng
first_name: bắt buộc
last_name: bắt buộc
birthday: không bắt buộc, kiểu ngày tháng
title: không bắt buộc
start_date: ngày bắt đầu làm việc, ngày tháng, mặc định là ngày hiện tại
타람스 1. Định nghĩa cấu truc của tham số truyền lên kha đơn giản
@schema %{
email: [type: :string],
first_name: [type: :string],
last_name: [type: :string],
title: :string,
birth_day: [type: :date],
start_date: [type: :date]
}
Schema đơn giản chỉ là một map với key là tên field và value là 1 list option của field đó.
2. Bây giờ thêm các ràng buộc
Tarams
required: true
cũng cho phép validate data sử dụng lại các hàm validate của Taram
@schema %{
email: [type: :string, required: true, validate: {:format, ~r/@/}],
first_name: [type: :string, required: true],
last_name: [type: :string, required: true],
title: :string,
birth_day: [type: :date],
start_date: [type: :date]
}
3. Bây giờ thì 기본 설정 các giá trị
Changeset
có thể la 1 giá trị hoặc 1 hàm. Mỗi khi parse tham số thì hàm này sẽ được gọi để lấy giá trị mặc định@schema %{
...
title: [type: :string, default: "staff"],
birth_day: [type: :date],
start_date: [type: :date, default: &Timex.today/0]
}
4. các giá trị tham số về đúng kiểu
Nhiều các giá trị tham số truyền lên phải được chuyển về đúng các loại dữ liệu phức tại
Ví dụ ngày tháng truyền lên là string
default
thì phải chuyển về kiểu date để sử dụng lại đượ Tarams hỗ trợ định nghĩa 1 hàm custom để cast giá trị, hàm này trả về01/12/1994
nếu parse thành công {:ok, value}
nếu thất bạidef parse_date(date_str) do
Timex.parse(date_str, "{0D}/{0M}/{YYYY}")
end
@schema %{
...
title: [type: :string, default: "staff"],
birth_day: [type: :date, cast_func: &parse_date/1],
start_date: [type: :date, default: &Timex.today/0]
}
5. Bây giờ sử dụng nào
def update(conn, params) do
with {:ok, user_data} <- Tarams.parse(@schema, params) do
# do anything with your params
# access data bằng atom key: user_data.email
else
{:error, changset} -> # return params error
end
end
Hàm
{:error, error_message}
sẽ parse và validate dữ liệu. Nếu mọi thứ đều ổn, sẽ trả về parse
và ngược lại thì trả về {:ok, data}
.완료! 코드 của bạn sẽ trở nên đơn giản và ngắn gọn hơn nhiều
Reference
이 문제에 관하여(Chuẩn hoá và validate dữ liệu trong Phoenix với thư viện Tarams), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bluzky/chu-n-hoa-va-validate-d-li-u-trong-phoenix-v-i-th-vi-n-tarams-4f30텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)