Validations in Sailsjs requests
npm install sails-hook-req-validate-promiseI will no longer support this package but I will continue to update the sails-hook-req-validate package.
---
---
Sails hook for overwrite req.validate request with Promise.
Non-Promise version: https://www.npmjs.com/package/sails-hook-req-validate
``javascript`
npm install sails-hook-req-validate-promise --save
> ##### Requirements:
Sails v1.x.x and lodash enabled as global (lodash is enabled by default).
---
`javascript`
const params = await req.validate(['fruit', ['string', {default: 'apple'}]); // if 'fruit' doesn't exists, it will be set as 'apple'
console.log(params);
`javascript`
const params = await req.validate([
{'fruit', {enum: ['apple', 'organe', 'bannana'], default: 'apple'}}, // also can be used with enum
{'username?', 'string' }
]);
console.log(params);
---
`javascript`
const params = await req.validate('fruit', {enum: ['apple', 'organe', 'bannana']});
console.log(params);
`javascript`
const params = await req.validate([
{'fruit', {enum: ['apple', 'organe', 'bannana']}},
{'username?', 'string' },
{'nickname?', 'any' } // any type
]);
console.log(params);
`javascript`
const params = await req.validate([
{'fruit', ['string', {enum: ['apple', 'organe', 'bannana']}]},
{'username?', 'string' }
]);
console.log(params);
---
for expecting parameter keys and returns req.badRequest (400 status code) if any parameter key is missing.
`javascript
try {
const params = await req.validate('id');
console.log(params); // {id: '1234'}
// if the validation fails, "req.badRequest" will be called and returns Promise.reject
} catch (err) {
// wil catch Promise.reject here.
}
`If you prefer non async-await promise method
`javascript
req.validate('id');
.then(params => {
console.log(params); // {id: '1234'}
})
.catch(err => {
console.error(err);
});
`
Disable
req.badRequest on error and enable Promise.reject
`javascript
const params = await req.validate('id', false); // <--- if you set the second value as FALSE, req.badRequest will NOT be call when error but it will just return Promise.reject
`
NOTE: To disable the default error response, set false as the second passing variable.
`javascript
const params = await req.validate(['id', 'firstname', 'lastname']);
console.log(params); // {id: '1234', firstname: "John", lastname: "Doe"}
// if the validation fails, "req.badRequest" will be called and returns Promise.reject
`
$3
Validates req.params for expecting parameter keys and returns req.badRequest (400 status code) if any parameter key is missing except optional parameters.`javascript
const params = await req.validate(['id', 'firstname', 'lastname?']); // lastname is an OPTIONAL field
console.log(params); // {id: '1234', firstname: "John", lastname: "Doe"}
// if the validation fails, "req.badRequest" will be called and returns Promise.reject
`NOTE: For an optional parameter, just add
? at the end of the passing parameter key.
$3
Validates req.params for expecting parameter keys and returns req.badRequest (400 status code) if any missing parameter key.`javascript
const params = await req.validate([
{'id' : 'numeric'},
{'firstname' : 'string'},
{'lastname' : 'string'}
]);
console.log(params); // {id: '1234', firstname: "John", lastname: "Doe"}
`
See Validation Filters for more information.
$3
OR | operarion is a new addition to 0.2.x version. It can be applied to either required or optional parameter.
`javascript
const params = await rreq.validate(
{'id': 'string | numeric'}, // 'numeric | string', 'numeric|string' or 'numeric| string' are OK. Space will be ignored
{'usernameOrEmail': 'string | numeric | email'}
);`
$3
Validates req.params for expecting parameter keys and returns req.badRequest (400 status code) if any missing parameter key.`javascript
const params = await rreq.validate([
{'id' : 'numeric'},
{'firstname' : ['string', 'toUppercase']},
{'lastname' : ['string', 'toLowercase']}
]);
console.log(params); // {id: '1234', firstname: "John", lastname: "Doe"}
`
NOTE: All CONVERTION filters start with to, for example: toUppercase, toBoolean.See Validation Filters and Conversion Filters for more information.
$3
Validates req.params for expecting parameter keys and returns req.badRequest (400 status code) if any missing parameter key.`javascript
const params = await req.validate([
{'id' : 'numeric'}, // (required) 'id' param as NUMERIC type
'phone?', // (optional) 'phone' as ANY type
{'website?': 'url'}, // (optional) 'website' as URL type
{'firstname' : ['string', 'toUppercase']}, // (required) 'firstname' as STRING type and convert to UPPERCASE
{'department' : ['string', 'lowercase']} // (required) 'department' as STRING type and must be LOWERCASE input
]);
console.log(params); // {id: '1234', firstname: "John", lastname: "Doe"}
// if the validation fails, "req.badRequest" will be called and will NOT returns Promise.reject
`
See Validation Filters and Conversion Filters for more information.
$3
When the validation fails, res.badRequest will not be sent instead 'false' will be returned.`javascript
try {
const params = await req.validate(
['id', 'firstname', 'lastname?'], // lastname is an OPTIONAL field
false // <--- if you set the second value as FALSE, req.badRequest will NOT be call "res.badRequest" response when error but it will return Promise.reject
);
console.log(params); // {id: '1234', firstname: "John", lastname: "Doe"}
// ..process
} catch (err) {
console.error(err);
return res.badRequest(); // Make sure to handle badRequest response
}
`NOTE: To disable the default error response, set
false as the second passing variable.
$3
`javascript
any
email
url
ip
alpha
numeric
base64
hex
hexColor
lowercase
uppercase
string
boolean
int
float
date
json
array
object
ascii
mongoId
alphanumeric
creditCard
`
$3
`javascript
toLowercase
toUppercase
toEmail // Normalize email string
toBoolean
toDate
toInt
toFloat
``