memorize-middleware
Version:
Cache req changes and apply them later
64 lines (41 loc) • 1.8 kB
Markdown
> Save changes, that middleware did on req and apply them after
```js
var express = require('express');
var app = express();
var memorize = require('memorize-middleware');
var middleware = function (req, res, next) {
console.log('Called once');
req.message = 'Boop!';
next();
};
app.use(memorize(middleware));
app.get('/', function (req, res, next) {
res.send(req.message);
});
app.listen(8080);
```
There are couple states in which `memorize` works:
1. __No cache__ - all requests will be halted, while result is pending.
2. __Middleware failed and there is no cached value__ - Error will be passed to next middleware.
3. __Result recieved__ - It will be stored, all pending clients will get result, all next clients will get this result instantly. If `updateInterval` set - it will be scheduled.
If `updateInterval` is set:
1. __Middleware failed in update time__ - Nothing will happen, all clients will recieve previous version, new update will be scheduled.
2. __Result recieved in update time__ - Previous result will be swapped with new one.
Creates middleware, that will call `middleware` and cache changes, that it did to req object.
Type: `Function`
Middleware, which changes should be cached.
Type: `Number`
Default: `0` — never
How often (in milliseconds) should `memorize` request new data for middleware. Don't make it too low.
## License
The MIT License (MIT) © [Vsevolod Strukchinsky](floatdrop@gmail.com)
[travis-url]: https://travis-ci.org/floatdrop/memorize-middleware
[travis-image]: http://img.shields.io/travis/floatdrop/memorize-middleware.svg?style=flat