{"id":16239055,"url":"https://github.com/xtrinch/sails-hook-validation-ev","last_synced_at":"2025-03-19T16:31:14.170Z","repository":{"id":66146916,"uuid":"147176841","full_name":"xtrinch/sails-hook-validation-ev","owner":"xtrinch","description":"Sails 1.x validation hook using express-validate functions","archived":false,"fork":false,"pushed_at":"2018-09-03T13:40:59.000Z","size":20,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-05-02T00:04:53.575Z","etag":null,"topics":["sails","sails-hook-validation","sails-validation","validation"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xtrinch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-03T08:46:04.000Z","updated_at":"2021-04-11T18:07:11.000Z","dependencies_parsed_at":"2023-06-10T04:00:39.399Z","dependency_job_id":null,"html_url":"https://github.com/xtrinch/sails-hook-validation-ev","commit_stats":{"total_commits":12,"total_committers":1,"mean_commits":12.0,"dds":0.0,"last_synced_commit":"1299be3c7699caee90ec0a349eb887612ceb344b"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xtrinch%2Fsails-hook-validation-ev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xtrinch%2Fsails-hook-validation-ev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xtrinch%2Fsails-hook-validation-ev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xtrinch%2Fsails-hook-validation-ev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xtrinch","download_url":"https://codeload.github.com/xtrinch/sails-hook-validation-ev/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244006260,"owners_count":20382441,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["sails","sails-hook-validation","sails-validation","validation"],"created_at":"2024-10-10T13:42:14.060Z","updated_at":"2025-03-19T16:31:13.935Z","avatar_url":"https://github.com/xtrinch.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![npm version](https://badge.fury.io/js/sails-hook-validation-ev.svg)](https://badge.fury.io/js/sails-hook-validation-ev)\n[![npm](https://img.shields.io/npm/dt/sails-hook-validation-ev.svg)]()\n\n# sails-hook-validation-ev\n\n## About\n\nSails 1.x hook for validating REST requests with the help of [express-validator](https://github.com/express-validator/express-validator). Because - why reinvent the wheel? Uses the same configuration functions as `express-validator`. Supports validators, sanitizers, localization, ...\n\n## Installation\n\nAs simple as `npm install --save sails-hook-validation-ev`.\n\n## Usage with blueprints\n\nFor models with blueprint routes you wish to validate, you need only add a `validate` function to it.\n\n### Example model\n\n`Todo.js:`\n\n    module.exports = {\n\n      attributes: {\n        title: {    \n          type: 'string',   \n          required: true    \n        },  \n         description: { \n          type: 'string',   \n          required: true    \n        },\n      },\n\n      validate: (req) =\u003e {\n        req.check('title')\n          .exists()\n          .isLength({ min: 1 }).withMessage('must be at least 5 chars long');\n        req.check('description').exists();\n      }\n\n    };\n\nFor info on which functions you can use, see [express-validator check API](https://express-validator.github.io/docs/check-api.html). It opens a world of possibilities :)\n\n### Example `POST /todo` response\n\n    {\n        \"errors\": [\n            {\n                \"location\": \"params\",\n                \"param\": \"title\",\n                \"msg\": \"Invalid value\"\n            },\n            {\n                \"location\": \"params\",\n                \"param\": \"title\",\n                \"msg\": \"must be at least 5 chars long\"\n            }\n        ]\n    }\n\n## Usage with custom handlers\n\n### Example `TodoController.js`\n\nThe following snippet will override default /POST blueprint handler with custom function. In overridden functions you hold the responsibility to validate requests.\n\n#### Option 1: Validate via validate function in model\n\n`TodoController.js:`\n\n      var validate = require('sails-hook-validation-ev/lib/validate')\n\n      module.exports = {\n        create: async function(req, res) {\n          validate(req)\n          const errors = await req.getValidationResult();\n          if (!errors.isEmpty()) {\n              return res.status(400).json({ errors: errors.array() });\n          }\n          return res.ok()\n        }  \n      };\n\n\n#### Option 2: Provide a custom validate function\n\n`TodoController.js:`\n\n      var validate = require('sails-hook-validation-ev/lib/validate')\n\n      module.exports = {\n        create: async function(req, res) {\n          validate(req, (req) =\u003e {\n            req.check('title')\n              .exists()\n              .isLength({ min: 1 }).withMessage('must be at least 5 chars long');\n            req.check('description').exists();\n          })\n\n          const errors = await req.getValidationResult();\n          if (!errors.isEmpty()) {\n              return res.status(400).json({ errors: errors.array() });\n          }\n          return res.ok()\n        }  \n      };\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxtrinch%2Fsails-hook-validation-ev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxtrinch%2Fsails-hook-validation-ev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxtrinch%2Fsails-hook-validation-ev/lists"}