Node.js / NestJS

GraphQL āļāļąāļš NestJS

Apollo Server, resolvers, schemas, queries, mutations, subscriptions, data loaders

25 āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒÂ·
Mid-Level
1

GraphQL āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

āļ„āļģāļ•āļ­āļš

GraphQL āđ€āļ›āđ‡āļ™āļ āļēāļĐāļēāļŠāļģāļŦāļĢāļąāļš query API āļ—āļĩāđˆāļžāļąāļ’āļ™āļēāđ‚āļ”āļĒ Facebook āļ‹āļķāđˆāļ‡āļŠāđˆāļ§āļĒāđƒāļŦāđ‰ client āļ‚āļ­āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ”āđ‰āļ•āļĢāļ‡āļ•āļēāļĄāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢ āļ•āđˆāļēāļ‡āļˆāļēāļ REST āļ—āļĩāđˆāđāļ•āđˆāļĨāļ° endpoint āļ„āļ·āļ™āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ—āļĩāđˆāļ•āļēāļĒāļ•āļąāļ§ GraphQL āļĄāļĩāļˆāļļāļ”āđ€āļ‚āđ‰āļēāđ€āļžāļĩāļĒāļ‡āļˆāļļāļ”āđ€āļ”āļĩāļĒāļ§āļžāļĢāđ‰āļ­āļĄ schema āļ—āļĩāđˆāļāļģāļŦāļ™āļ”āļŠāļ™āļīāļ”āļ­āļĒāđˆāļēāļ‡āđ€āļ‚āđ‰āļĄāļ‡āļ§āļ” āđāļ™āļ§āļ—āļēāļ‡āļ™āļĩāđ‰āļŠāđˆāļ§āļĒāļĨāļ”āļāļēāļĢ over-fetching āđāļĨāļ° under-fetching āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļžāļĢāđ‰āļ­āļĄāļ—āļąāđ‰āļ‡āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļ‚āļ­āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™

2

āļšāļ—āļšāļēāļ—āļŦāļĨāļąāļāļ‚āļ­āļ‡ schema GraphQL āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

āļ„āļģāļ•āļ­āļš

Schema āļ‚āļ­āļ‡ GraphQL āļāļģāļŦāļ™āļ”āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ‚āļ­āļ‡ API āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļ”āđ‰āļ§āļĒāļāļēāļĢāļĢāļ°āļšāļļāļŠāļ™āļīāļ”āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđƒāļŠāđ‰āđ„āļ”āđ‰ queries mutations āđāļĨāļ°āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āđŒāļĢāļ°āļŦāļ§āđˆāļēāļ‡ entity āļ—āļģāļŦāļ™āđ‰āļēāļ—āļĩāđˆāđ€āļ›āđ‡āļ™āļŠāļąāļāļāļēāļĢāļ°āļŦāļ§āđˆāļēāļ‡ client āđāļĨāļ° server āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡ query āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāđāļĨāļ°āđ€āļ•āļīāļĄāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāđƒāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļžāļąāļ’āļ™āļē Schema āđƒāļŠāđ‰ Schema Definition Language (SDL) āđ€āļžāļ·āđˆāļ­āļ­āļ˜āļīāļšāļēāļĒāļŠāļ™āļīāļ”āđāļĨāļ°āļŸāļīāļĨāļ”āđŒāļ‚āļ­āļ‡āļĄāļąāļ™āđāļšāļš declarative

3

āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡ Query āđāļĨāļ° Mutation āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

āļ„āļģāļ•āļ­āļš

Queries āđƒāļŠāđ‰āļŠāļģāļŦāļĢāļąāļšāļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđ‚āļ”āļĒāđ„āļĄāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆ Mutations āđƒāļŠāđ‰āļŠāļģāļŦāļĢāļąāļšāļŠāļĢāđ‰āļēāļ‡ āđāļāđ‰āđ„āļ‚ āļŦāļĢāļ·āļ­āļĨāļšāļ‚āđ‰āļ­āļĄāļđāļĨ āļāļēāļĢāđāļĒāļāđ€āļŠāļīāļ‡āļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāļ™āļĩāđ‰āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āđ€āļ‚āđ‰āļēāđƒāļˆāđ€āļˆāļ•āļ™āļēāļ‚āļ­āļ‡āļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāđāļĨāļ°āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāđƒāļŠāđ‰āļāļēāļĢāļ›āļĢāļąāļšāđāļ•āđˆāļ‡āđ€āļ‰āļžāļēāļ°āđ„āļ”āđ‰ āļ•āļēāļĄāļ˜āļĢāļĢāļĄāđ€āļ™āļĩāļĒāļĄ Queries āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļ‡āļēāļ™āđāļšāļšāļ‚āļ™āļēāļ™āđ„āļ”āđ‰ āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆ Mutations āļ—āļģāļ‡āļēāļ™āđāļšāļšāļĨāļģāļ”āļąāļšāđ€āļžāļ·āđˆāļ­āļĢāļąāļšāļ›āļĢāļ°āļāļąāļ™āļ„āļ§āļēāļĄāļŠāļ­āļ”āļ„āļĨāđ‰āļ­āļ‡āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ

4

resolver āđƒāļ™ GraphQL āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

5

decorator āļ‚āļ­āļ‡ NestJS āļ•āļąāļ§āđƒāļ”āļ—āļĩāđˆāđƒāļŠāđ‰āļāļģāļŦāļ™āļ” Query āļ‚āļ­āļ‡ GraphQL?

+22 āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āļŦāļąāļ§āļ‚āđ‰āļ­āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Node.js / NestJS āļ­āļ·āđˆāļ™āđ†

āļžāļ·āđ‰āļ™āļāļēāļ™ Node.js

Junior
20 āļ„āļģāļ–āļēāļĄ

Core API āļ‚āļ­āļ‡ Node.js

Junior
25 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđāļšāļšāļ­āļ°āļ‹āļīāļ‡āđ‚āļ„āļĢāļ™āļąāļŠ

Junior
25 āļ„āļģāļ–āļēāļĄ

āļžāļ·āđ‰āļ™āļāļēāļ™ Express.js

Junior
20 āļ„āļģāļ–āļēāļĄ

āļžāļ·āđ‰āļ™āļāļēāļ™ NestJS

Junior
23 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ­āļ­āļāđāļšāļš REST API

Junior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āđāļĨāļ° DTO

Junior
20 āļ„āļģāļ–āļēāļĄ

āđ€āļ­āļāļŠāļēāļĢ API āđāļĨāļ° Contract

Junior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”

Junior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ—āļ”āļŠāļ­āļšāļŦāļ™āđˆāļ§āļĒ (Unit Testing)

Junior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļˆāļąāļ”āļ•āļēāļĢāļēāļ‡āļ‡āļēāļ™

Junior
15 āļ„āļģāļ–āļēāļĄ

Module āđāļĨāļ° DI āļ‚āļ­āļ‡ NestJS

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļāļģāļŦāļ™āļ”āļ„āđˆāļēāđāļĨāļ°āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄ

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļĒāļ·āļ™āļĒāļąāļ™āļ•āļąāļ§āļ•āļ™āļ”āđ‰āļ§āļĒ JWT

Mid-Level
25 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāđƒāļŦāđ‰āļŠāļīāļ—āļ˜āļīāđŒāđāļĨāļ° RBAC

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ”āđ‰āļ§āļĒ TypeORM

Mid-Level
30 āļ„āļģāļ–āļēāļĄ

Prisma ORM

Mid-Level
25 āļ„āļģāļ–āļēāļĄ

Middleware āđāļĨāļ° Interceptor

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ­āļąāļ›āđ‚āļŦāļĨāļ”āđ„āļŸāļĨāđŒ

Mid-Level
15 āļ„āļģāļ–āļēāļĄ

WebSockets

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ—āļ”āļŠāļ­āļšāđāļšāļš End-to-End

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāđāļ„āļŠāļ”āđ‰āļ§āļĒ Redis

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļ„āļīāļ§āļ”āđ‰āļ§āļĒ Bull

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

DevOps, Logging āđāļĨāļ° CI/CD

Mid-Level
25 āļ„āļģāļ–āļēāļĄ

Docker āđāļĨāļ° Containerization

Mid-Level
25 āļ„āļģāļ–āļēāļĄ

āđ„āļĄāđ‚āļ„āļĢāđ€āļ‹āļ­āļĢāđŒāļ§āļīāļŠ

Senior
30 āļ„āļģāļ–āļēāļĄ

āđāļ™āļ§āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āļ”āđ‰āļēāļ™āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ

Senior
25 āļ„āļģāļ–āļēāļĄ

āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđāļĨāļ°āļāļēāļĢ Deploy āļšāļ™ Cloud

Senior
30 āļ„āļģāļ–āļēāļĄ

āđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļ Node.js / NestJS āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ„āļĢāļąāđ‰āļ‡āļ–āļąāļ”āđ„āļ›

āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ„āļģāļ–āļēāļĄāļ—āļąāđ‰āļ‡āļŦāļĄāļ” flashcards āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„ āđāļšāļšāļāļķāļāļŦāļąāļ” code review āđāļĨāļ°āļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āđ€āļĢāļīāđˆāļĄāđƒāļŠāđ‰āļŸāļĢāļĩ