Seamlessly serialize JSON data using TypeScript in express.
This middleware requires Scrubbr to be installed and setup.
npm i -S scrubbr
npm i -S express-scrubbr
Add middleware to your express app
import express from "express";
import Scrubbr from "scrubbr";
import scrubbrMiddleware from "express-scrubbr";
var app = express();
// Load typescript schema and set any scrubbr options
const scrubbr = new Scrubbr("./schema.ts");
app.use(scrubbrMiddleware(scrubbr));
Use it in your routes
app.get('/users', (req, res) => {
const userData = fetchDataHere();
resp.status(200)
.scrubbr('UserList') // serialize userData with the UserList typescript type
.send(userData);
}
You can pass scrubbr options at the route level:
resp
.status(200)
.scrubbr("UserList", { logLevel: LogLevel.DEBUG })
.send(userData);
You can also pass a custom scrubbr instance:
const customScrubbr = scrubbr.clone();
customScrubbr.addTypeSerializer("User", userTransformer);
resp.status(200).scrubbr("UserList", customScrubbr).send(userData);
The middleware will clone the scrubbr instance, so if you want to add global state you can do that through the express response locals object.
For example, adding the authenticated user to the global state:
app.use(scrubbrMiddleware(scrubbr));
// Auth middleware
app.use((req, res, next) => {
const user = ... // do authy stuff here.
// Access the scrubbr instance on the response locals object
res.locals.scrubbr.setGlobalContext({ user }, true);
})