Skip to content

Commit 4206167

Browse files
committed
added is optional feature and fixed res sent even after no error issue, updated readme.md
1 parent 5d04a3f commit 4206167

3 files changed

Lines changed: 34 additions & 27 deletions

File tree

example/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const { validate } = require("../index");
66
let valuedValidate = validate(require("./rules"));
77

88

9-
app.get("/checkFromQuery/:id", valuedValidate, (req, res) => {
9+
app.get("/checkFromQuery", valuedValidate, (req, res) => {
1010
res.send("hey you get all inputs correct");
1111
});
1212

example/rules.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ module.exports = [
22
{
33
"from": "query",
44
"key": "emailId",
5-
validation_function: value => value.indexOf("@") > -1
5+
validation_function: value => value.indexOf("@") > -1,
6+
is_optional: true
67
},
78
{
89
"from": "header",

index.js

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,35 @@
11
const { extractValue, dataTypeCheck } = require("./utils");
22

3-
const validate = (rules) => {
4-
return (req, res, next) => {
5-
let error_messages = [];
6-
rules.forEach(rule => {
7-
let value = extractValue(req, rule);
8-
if (!value) {
9-
error_messages.push(rule.message || `Invalid ${rule.key}, value not found in ${rule.from}`);
10-
return;
11-
}
12-
if (rule.datatype && !dataTypeCheck(rule.datatype, value)) {
13-
error_messages.push(rule.message || `Invalid ${rule.key}, required a ${rule.datatype} value`);
14-
return;
15-
}
16-
if (rule.validation_function && !rule.validation_function(value)) {
17-
error_messages.push(rule.message || `Invalid ${rule.key}`);
18-
}
19-
});
20-
if (error_messages) {
21-
res.status(400);
22-
res.send({ error_messages });
23-
} else {
24-
next();
25-
}
3+
const validate = rules => {
4+
return (req, res, next) => {
5+
let error_messages = [];
6+
rules.forEach(rule => {
7+
let value = extractValue(req, rule);
8+
if (rule.is_optional && !value) {
9+
return;
10+
}
11+
if (!value) {
12+
error_messages.push(rule.message || `Invalid ${rule.key}, value not found in ${rule.from}`);
13+
return;
14+
}
15+
if (rule.datatype && !dataTypeCheck(rule.datatype, value)) {
16+
error_messages.push(
17+
rule.message ||
18+
`Invalid ${rule.key}, required a ${rule.datatype} value`
19+
);
20+
return;
21+
}
22+
if (rule.validation_function && !rule.validation_function(value)) {
23+
error_messages.push(rule.message || `Invalid ${rule.key}`);
24+
}
25+
});
26+
if (error_messages.length > 0) {
27+
res.status(400);
28+
res.send({ error_messages });
29+
} else {
30+
next();
2631
}
27-
}
32+
};
33+
};
2834

29-
exports.validate = validate;
35+
exports.validate = validate;

0 commit comments

Comments
 (0)