Express Middleware¶
This provides utilities for using Prudence in Express.
-
Prudence.
Middleware
(schema[, errorHandler[, errorMessages[, options]]])¶ Creates an Express Middleware that validates req.query (method “GET”) or req.body (all other methods) using Prudence.
On success, this
- Arguments
schema (object) – The Prudence schema to validate req.query or req.body against.
errorHandler (function) – If prudence hits an error, this function determines what to do with it. See Error Handler, optional.
errorMessages (object) – Error message overrides for Prudence, optional.
options (object) – The options for Prudence, optional.
- Returns
Express Middleware Function
Note
Passing an errorHandler is optional. If one is not passed, the middleware will return 400 and the error message in JSON.
Example usage:
let schema = {
username: Prudence.isBoundedString(3, 20),
password: Prudence.isBoundedString(3, 20),
confirmPassword: (self, parent) => self === parent.password
};
let errorHandler = (req, res, next, errMsg) => res.send(400).send(`You messed up! ${errMsg}`);
router.post("/register", Prudence.Middleware(schema, errorHandler), (req, res) => {
// assign cookies or something
return res.redirect("/"); // send users back to homepage
});
Error Handler¶
A function which is passed 4 parameters. In order; req
, res
, next
, errMsg
.
The first three are identical to their Express middleware counterparts. The errMsg is the string Prudence returned.
Curry Middleware¶
It’s common that you’ll want to re-use error handlers. To support this, you can use the following function.
-
Prudence.
CurryMiddleware
(errorHandler)¶ Returns a function that takes schema, [errorMessages, [options]] to create express middleware. The initially passed errorHandler is always used.
- Arguments
errorHandler (function) – If prudence hits an error, this function determines what to do with it. See Error Handler, optional.
- Returns
See above.
Example usage:
let schema = {
username: Prudence.isBoundedString(3, 20),
password: Prudence.isBoundedString(3, 20),
confirmPassword: (self, parent) => self === parent.password
};
let errorHandler = (req, res, next, errMsg) => res.send(400).send(`You messed up! ${errMsg}`);
let MiddlewareGenerator = Prudence.CurryMiddleware(errorHandler);
router.post("/register", MiddlewareGenerator(schema), (req, res) => {
// assign cookies or something
return res.redirect("/"); // send users back to homepage
});
Example usage:
let schema = {
username: Prudence.isBoundedString(3, 20),
password: Prudence.isBoundedString(3, 20),
confirmPassword: (self, parent) => self === parent.password
};
let errorHandler = (req, res, next, errMsg) => res.send(400).send(`You messed up! ${errMsg}`);
router.post("/register", Prudence.Middleware(schema, errorHandler), (req, res) => {
// assign cookies or something
return res.redirect("/"); // send users back to homepage
});