using middleware after the response is sent

I've encountered an issue with a middleware function that is triggering after the main function finishes execution from the endpoint. Here's the code for my middleware:

export const someMiddleware = async (
    req: Request,
    res: Response,
    next: NextFunction
) => {
    res.on("finish", () => {
        // handling logic here
    })
    next();
}

I'm facing difficulty in accessing the data sent to the client within the on() callback of this middleware. Can anyone guide me on how to retrieve the response body sent to the client in this scenario?

Appreciate any assistance provided!

Answer №1

Dealing with Express can be quite challenging. One approach to managing this issue is by customizing the send and write functions to intercept the output.

It may seem daunting, but other middleware solutions, such as a gzip middleware, also employ similar techniques.

The frustration caused by this limitation eventually prompted me to create my own framework - you can check it out here. I understand where you're coming from on this.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

The styles from the npm package are not being properly applied to the class

After creating my react npm package using webpack, I encountered an issue where the styles from the package were not being applied to classes when installed in my react project. I used style-loader in my webpack configuration, but kept getting errors sayin ...

Generate a distinct variable name within the *ngFor loop

I am trying to create a dynamic table where clicking a button displays the row directly beneath it. I checked out a helpful post on this topic, but didn't find the exact solution I needed. The current setup works but reveals all hidden rows because ...

Leveraging the power of HTML5 alongside Angularjs and Node/Express within the MEAN.js boilerplate framework

I've decided to kickstart my app using the mean.js () boilerplate because of its built-in authentication/authorization features. However, I've hit a roadblock when it comes to incorporating HTML5 into my project. In my Angular app, I've en ...

How to assign a preset value to a text area in AngularJS

While working with PHP and AngularJS, I have a requirement to specify the default value for a textarea. I prefer not to utilize ng-init="textarea = ''" as the data to populate is extensive. Similarly, I want to avoid using AJAX to prevent additi ...

What is the reason behind Object.hasOwn(x,y) being different from Reflect.ownKeys(x).includes(y) when x represents a CSSStyleDeclaration object and y is a hyphenated property such as 'z-index'?

Both of these conditions are true: 'z-index' in getComputedStyle(document.body) // true Reflect.has(getComputedStyle(document.body), 'z-index') // true Additionally, the following statements also evaluate to true, indicating that &apo ...

Incorporate the {{ }} syntax to implement the Function

Can a function, such as toLocaleLowerCase(), be used inside {{ }}? If not, is there an alternative method for achieving this? <div *ngFor="let item of elements| keyvalue :originalOrder" class="row mt-3"> <label class=" ...

The upcoming developer manages to execute the program successfully, however, it continues to load indefinitely

Executing the command yarn dev consistently runs successfully in my VS Code terminal: $ yarn dev yarn run v1.22.19 warning ..\..\..\..\package.json: No license field $ next dev ready - started server on 0.0.0.0:3000, url: http://localho ...

Steps for detecting a 401 Unauthorized error in SignalR when the token has expired

I have created a dynamic page that continuously fetches real-time information from my Azure functions backend using SignalR. If I am on the page for an hour and experience a disconnect, the signalr client will attempt to reconnect automatically, which usua ...

Discovering a way to retrieve objects from an array of objects with matching IDs

Here is a code snippet I put together to illustrate my objective. arr = [ { id:1 , name:'a', title: 'qmummbw' }, { id:2 , name:'b', title: 'sdmus' }, { id:2 , name:'', title: 'dvfv' }, ...

Differences between searching for elements using `find` and `querySelector

When working with AngularJS, I encounter an error when trying to use querySelector. angular.element(angular.element(e).querySelector('.open')).removeClass('open'); However, if I switch to using: angular.element(angular.element(e).fin ...

What is the best way to use checkboxes in VueJS to apply filters on a loop and display specific results?

I'm struggling with implementing filters using checkboxes on a list of results and could really use some assistance. Currently, only the 'All' option is working for applying any filtering logic. Here is how my HTML looks like with the filt ...

Utilizing regular expressions in Javascript to retrieve multiple instances

This paragraph contains a specific string txt = "Local residents o1__have called g__in o22__with reports..."; that requires extracting numbers between each occurrence of o and __ If we use the following regex: txt.match(/o([0-9]+)__/g); We will obtain ...

Unleashing the Power: Crafting Impeccable For Loops

After running the select query in the "get-employee.php" page, I obtained the answer for this page. Then, I returned the data to the previous page (home.php). On this page, I added a for loop in JavaScript before the tag with the class "col-md-3". Within t ...

Numerous datasets of bubble charts available for use in chartjs

I have an array named main_arr that contains multiple data arrays. To visually represent these different arrays, I am utilizing a bubble chart where each one is displayed in a distinct color. var myBubbleChart = new Chart(ctx, { type : 'bubble&a ...

Converting a ReadStream to a ReadableStream in NodeJS: A Step-by-Step Guide

This question poses the opposite scenario to converting a ReadableStream into a ReadStream. ReadStream is a data structure utilized in Node.js ReadableStream is a structure that comes from the web platform, as detailed here As new runtimes like Deno or t ...

Top method for organizing Vue JS elements

I am looking to integrate a search feature on my website using Vue 2, where the search functionality will be applied to components generated from a JSON file upon page load. The JSON file contains the keywords I want to utilize for the search - specifical ...

Uploading base64 arrays from AngularJS to a Node.js server: Allowing Access-Control-Origin

My current challenge involves sending an array of base64 strings from my Client Side (AngularJs) to my NodeJs Server. However, I've encountered a peculiar situation. When I attempt to send an object containing the base64 data along with other properti ...

I'm curious as to why my form data is being transmitted as application/json during my POST request, and what is causing it to generate a Bad Request error?

When adding a hotel to the database using react-hook-form, I include images as part of the form input. After submitting the form, the data is converted into FormData and then sent to the API for processing. The conversion and submission of the form take p ...

Vue chart not displaying data until the window is resized

I've encountered an issue with my apexchart where the data is not displayed when the page loads. It only appears when I zoom in/out or resize the window, which seems odd to me. I came across a similar problem on the apexcharts github, but it doesn&apo ...

There was an error encountered: TypeError - It is not possible to access the property 'handle' of an undefined object. Nevertheless, the following condition was set: if (fn.handle && fn

Seeking assistance with my first project involving node and express. I followed the instructions on the Express.js site but encountered an issue that I can’t seem to figure out. Any guidance on what might be causing this error would be greatly appreciate ...