1 - Trong file README.md hướng dẫn thiếu bước run project.
Cần bổ sung hướng dẫn file môi trường config như nào để chạy đc project, ví dụ là cần tạo 1 file .env.example có các key cần thiết, value có thể để trống, rồi viết hướng dẫn cần clone file này ra 1 file mới đặt tên là .env.development.local, sau đó tạo DB, chạy migration như nào,...
2 - Field username sai rule đặt tên, username -> userName
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.
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.
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
với case error thì trả về data đc wrap trong key error
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.