- Rest API
- Graphql
- Socket.IO
- Authentication with JWT
- Authorization
- Prisma ODM
- MongoDB database
- Microservice
- Websocket
- Redis pub/sub
nest new project_name
- create module
nest g module pets
- create service
nest g service pets
- create resolver
nest g resolver pets
For quickly creating a CRUD controller with the validation built-in, you may use the CLI's CRUD generator (create full module with module, controller, service, dto,...)
nest g resource [name].
add config GraphQl in app module
npx prisma init
- install and generate Prisma Client
npm i @prisma/client
or
npx prisma generate
Prisma require using mongo support transaction (mongo replica set) Nếu sử dụng prisma thì không cần file service mà query trực tiếp trong resolver cũng được
REST API
=> *.dto.tsGraphQR
=> *.input.ts
- [Prisma] exists a field require in .prisma but not exists in db. Trường hợp thay đổi schema.prisma. nếu dữ liệu cũ không có field mới mà field mới require trong schema.prisma thì sẽ bị lỗi này
- [Gql] Lỗi này do khai báo type không hợp lệ. input hoặc return giữa prisma và service không khớp
- [Authorization]Chưa import strategy('jwt') vào provider của auth.module
- [Prisma] Lỗi sử dụng toán tử connect nhưng không tìm thấy record để connect trong db (không tìm thấy user có
id = authorId
đó trong db)
- [Authentication + Authorization] Không nhận được context của request.
- Gql và Rest thì xử lý context khác nhau. Nếu gql thì phải dùng
GqlExecutionContext
để tạo lại context... - Phải đảm bảo authentication thực thi trước authorization thì mới lấy được info user login
- Encountered an UNDEFINED dependency. có thể là do circular import dùng forward ref trong service
- Lối do import module chéo lẫn nhau dùng forward ref trong import