A lightweight api side duplicate check
npm install node-duplicate-req
In order for it to work it must be placed after request body parser. Redis must be installed
First require package and instantiate it with redisClient
var dupCheck = require('node-duplicate-req')( redisClient );
You can also pass in an options object at instantiation for shared options between all middleware.
NOTE: if no options are passed defaults will be used.
var dupCheck = require('node-duplicate-req')( redisClient, { keyProperty: 'req.user.id', ttl: 30 } );
Then create the middleware you want to use, here you can also pass in an options object that will only be used for this specific endpoint.
var userDupCheckMiddleware = dupCheck.middleware( { prefix: 'users-', ignoreProperties: [ 'user.age', 'user.notes'] } );
var users = require('../controllers/users');
server.post( '/users', dupCheckMiddleware, users.create );
Or create middleware without options, Defaults are at the bottom of the readme
var dupCheckMiddleware = dupCheck.middleware();
Optional (Custom Request Override Header):
- 'x-override-dupcheck' : if on the request object, will override the function, allowing the request to skip the duplicate checking process all together options
Property | DataType | Default | Description |
---|---|---|---|
ttl | Number | 60 | How many seconds you want it to live in the redis database |
keyValue | String | req.authorization.credentials + method and route | The key to save in the redis database |
prefix | String | '' | prefix to be included with each redis entry |
ignoreEmptyBody | Boolean | true | When set to true it does not save empty object in redis database |
ignoreProperties | Array | [] | Properties you want ignored from req object, default empty array. Give absolute path to property |
infoLogFunc | Function | null | Function to handle your info logs |
errorLogFunc | Function | null | Function to handle your error logs |
ovrLogFunc | Function | null | Function to handle your logs when the request is overridden by a header |
dupMsg | String | "Duplicate request detected" | Custom string message to be sent back in the response for duplicates |
errMsg | String | "Internal server error has occurred" | Custom string message to be sent back in the response for errors |