Bird
Raised Fist0
NestJSframework~5 mins

Event handling in NestJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is event handling in NestJS?
Event handling in NestJS is a way to listen for and respond to events within the application, allowing different parts of the app to communicate without tight coupling.
Click to reveal answer
beginner
Which decorator is used to listen to events in NestJS?
The @OnEvent() decorator is used to mark a method as an event listener for a specific event name.
Click to reveal answer
beginner
How do you emit an event in NestJS?
You use the EventEmitter2 service's emit() method, passing the event name and optional payload to notify listeners.
Click to reveal answer
intermediate
Why use event handling in NestJS instead of direct method calls?
Event handling decouples components, making the app easier to maintain and extend by allowing parts to react to events without knowing who triggered them.
Click to reveal answer
beginner
What must you do to enable event handling in a NestJS application?
You must import and provide the EventEmitterModule in your module to use event handling features.
Click to reveal answer
Which NestJS module provides event handling capabilities?
ACacheModule
BHttpModule
CConfigModule
DEventEmitterModule
What decorator do you use to listen for an event named 'user.created'?
A@Listen('user.created')
B@EventListener('user.created')
C@OnEvent('user.created')
D@Subscribe('user.created')
How do you send data with an event in NestJS?
APass data as the second argument to emit()
BUse a global variable
CAttach data to the event name string
DNestJS events cannot carry data
What is a benefit of using event handling in NestJS?
ADecouples components for better maintainability
BSimplifies direct method calls
CTight coupling between components
DRemoves the need for modules
Which service do you inject to emit events in NestJS?
AHttpService
BEventEmitter2
CConfigService
DLoggerService
Explain how to set up and use event handling in a NestJS application.
Think about module setup, sending, and receiving events.
You got /4 concepts.
    Describe the advantages of using event handling in NestJS compared to direct method calls.
    Consider how event handling affects app structure and flexibility.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of event handling in a NestJS application?
      easy
      A. To allow different parts of the app to react to actions without being tightly connected
      B. To directly call methods from other classes
      C. To replace all HTTP requests with events
      D. To store data permanently in the database

      Solution

      1. Step 1: Understand event handling concept

        Event handling lets parts of an app respond to actions independently, avoiding tight coupling.
      2. Step 2: Compare options

        Only To allow different parts of the app to react to actions without being tightly connected describes this purpose correctly; others describe unrelated concepts.
      3. Final Answer:

        To allow different parts of the app to react to actions without being tightly connected -> Option A
      4. Quick Check:

        Event handling = loose coupling reaction [OK]
      Hint: Event handling means reacting without tight connections [OK]
      Common Mistakes:
      • Thinking event handling replaces HTTP requests
      • Confusing event handling with direct method calls
      • Assuming event handling stores data
      2. Which decorator is used to mark a class as an event handler in NestJS?
      easy
      A. @HandleEvent
      B. @EventListener
      C. @EventsHandler
      D. @EventSubscriber

      Solution

      1. Step 1: Recall NestJS event handler syntax

        The correct decorator to mark event handler classes is @EventsHandler.
      2. Step 2: Verify options

        Options B, C, and D are not valid NestJS decorators for event handlers.
      3. Final Answer:

        @EventsHandler -> Option C
      4. Quick Check:

        @EventsHandler marks event handlers [OK]
      Hint: Use @EventsHandler to mark event handler classes [OK]
      Common Mistakes:
      • Using @EventListener which is not a NestJS decorator
      • Confusing with @HandleEvent which does not exist
      • Using @EventSubscriber which is from other frameworks
      3. Given this event handler code, what will be logged when eventBus.publish(new UserCreatedEvent('Alice')) is called?
      import { EventsHandler, IEventHandler } from '@nestjs/cqrs';
      
      export class UserCreatedEvent {
        constructor(public readonly username: string) {}
      }
      
      @EventsHandler(UserCreatedEvent)
      export class UserCreatedHandler implements IEventHandler<UserCreatedEvent> {
        handle(event: UserCreatedEvent) {
          console.log(`User created: ${event.username}`);
        }
      }
      medium
      A. User created: undefined
      B. No output because eventBus.publish does nothing
      C. Error: handle method missing
      D. User created: Alice

      Solution

      1. Step 1: Understand event publishing and handling

        Publishing UserCreatedEvent triggers UserCreatedHandler which logs the username.
      2. Step 2: Check the handle method output

        The handle method logs "User created: " plus the event's username, which is "Alice".
      3. Final Answer:

        User created: Alice -> Option D
      4. Quick Check:

        Event publish triggers handler log [OK]
      Hint: Publishing event triggers handle() logging username [OK]
      Common Mistakes:
      • Assuming username is undefined
      • Thinking handle method is missing
      • Believing eventBus.publish does nothing
      4. What is wrong with this event handler code?
      import { EventsHandler, IEventHandler } from '@nestjs/cqrs';
      
      export class OrderPlacedEvent {
        constructor(public readonly orderId: number) {}
      }
      
      @EventsHandler(OrderPlacedEvent)
      export class OrderPlacedHandler implements IEventHandler<OrderPlacedEvent> {
        handle() {
          console.log('Order placed:', orderId);
        }
      }
      medium
      A. The handle method is missing the event parameter
      B. The @EventsHandler decorator is used incorrectly
      C. The event class should not have a constructor
      D. The console.log syntax is invalid

      Solution

      1. Step 1: Check handle method signature

        The handle method must accept the event parameter to access event data.
      2. Step 2: Identify usage of event data

        Inside handle, orderId is used but not defined because event parameter is missing.
      3. Final Answer:

        The handle method is missing the event parameter -> Option A
      4. Quick Check:

        handle(event) needs event parameter [OK]
      Hint: handle() must receive event parameter to access data [OK]
      Common Mistakes:
      • Omitting event parameter in handle method
      • Misusing @EventsHandler decorator
      • Thinking constructor is not needed in event class
      5. You want to handle two different events, UserCreatedEvent and UserDeletedEvent, in one handler class. Which approach correctly implements this in NestJS?
      hard
      A. Use @EventsHandler without parameters and check event type inside handle method
      B. Use @EventsHandler(UserCreatedEvent, UserDeletedEvent) on one class and implement handle(event) with type checks
      C. Use @EventsHandler on one class but implement two separate handle methods named handleUserCreated and handleUserDeleted
      D. Create two separate handler classes each with @EventsHandler for one event

      Solution

      1. Step 1: Understand multiple event handling in one class

        In NestJS, you can pass multiple event classes to @EventsHandler decorator on one class.
      2. Step 2: Implement single handle method with event type checks

        The handle method receives any event instance; inside it, you check the event type to handle accordingly.
      3. Final Answer:

        Use @EventsHandler(UserCreatedEvent, UserDeletedEvent) on one class and implement handle(event) with type checks -> Option B
      4. Quick Check:

        Multiple events in one handler use @EventsHandler(...events) [OK]
      Hint: Use @EventsHandler with multiple events and one handle method [OK]
      Common Mistakes:
      • Trying to define multiple handle methods in one class
      • Creating separate classes instead of one combined handler
      • Using @EventsHandler without parameters
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard