HoangHiep01 / ecommerce

0 stars 0 forks source link

Code review 08/10 #2

Open md-trg opened 1 week ago

md-trg commented 1 week ago

1 - Trong file README.md hướng dẫn thiếu bước run project.

2 - Field username sai rule đặt tên, username -> userName

Ref code: https://github.com/HoangHiep01/ecommerce/blob/52e1a7fa7fc081292bfa2a5a718da1469796aa48/src/modules/users/entities/user.entity.ts#L21

3 - Sử dụng Decorator composition để rút gọn code viết doc swagger ở controller

Ref code: https://github.com/HoangHiep01/ecommerce/blob/52e1a7fa7fc081292bfa2a5a718da1469796aa48/src/modules/users/users.controller.ts#L30-L32 Xem ví dụ: https://docs.nestjs.com/custom-decorators#decorator-composition

4 - Cần có prefix cho tất cả endpoint API, prefix đặt là /api/v1

ví dụ endpoint API sign up sẽ như sau: {{api-url}}/api/v1/sign-up

5 - Cần có format trả về data chung với 2 cases: success và error

Ví dụ với case success thì trả về data đc wrap trong key data như sau

{
  "data": {
    "phoneNumber": "091",
    "email": "abc@abc.com"
  }
}

với case error thì trả về data đc wrap trong key error

{
  "error": {
    "message": "Something went wrong!"
  }
}

6 - PATCH và POST có thể quy chung về POST cho đơn giản

7 - Sai chính tả tên func (findOneByEmale)

Ref code: https://github.com/HoangHiep01/ecommerce/blob/860959821b8f0dc547684ec6ac5338d872a47f98/src/modules/users/users.service.ts#L50

8 - Cần phân trang kết quả trả về với các API GET trả về list data

Keyword: return paginated data Ref code: https://github.com/HoangHiep01/ecommerce/blob/860959821b8f0dc547684ec6ac5338d872a47f98/src/modules/users/users.service.ts#L43

9 - Tất cả các func đều cần handle case exception và có error log/exception rõ ràng để khi có lỗi thì đọc log sẽ dễ dàng biết đc lỗi ở đâu, lỗi của ai (data dùng để định danh để biết lỗi thuộc về ai, ví dụ data để định danh là email thì các log cần có thông tin này)

10 - Các data lưu ở DB là thời gian thì nên lưu ở dạng timestamp để dễ dàng xử lý output lại khi cần, ví dụ lưu timestamp thì có thể dễ dàng convert ra bất kỳ format date time theo múi giờ nào muốn.

Ref code: https://github.com/HoangHiep01/ecommerce/blob/f5cf40660864f07b708ab08b9ffb850a7352215c/src/modules/customers/customers.service.ts#L29-L30

11 - Cần check validate data, check logic trước khi tạo mới data customer

Ref code: https://github.com/HoangHiep01/ecommerce/blob/f5cf40660864f07b708ab08b9ffb850a7352215c/src/modules/customers/customers.service.ts#L16-L32

Bởi vì data backend nhận từ client chưa đảm bảo đc việc data đã "uy tín" chưa nên backend luôn cần check validate data trước khi xử lý logic để trả về lỗi với các case truyền sai data. Ví dụ data truyền lên mà email nhưng value lại ko đúng format email thì cần trả về lỗi cho user. Hay trước khi tạo data thì cần kiểm tra xem thông tin customer này đã có chưa, nếu có rồi thì cần trả về lỗi báo trùng data chẳng hạn.

HoangHiep01 commented 2 days ago

@md-trg em đã fix hết các lỗi trong đánh giá này rồi ạ