{"id":18908932,"url":"https://github.com/luckcoding/mongoose-validation","last_synced_at":"2026-03-06T20:30:23.175Z","repository":{"id":82856480,"uuid":"139869528","full_name":"luckcoding/mongoose-validation","owner":"luckcoding","description":"A magical parameter verifier. Support koa.","archived":false,"fork":false,"pushed_at":"2018-07-06T07:59:02.000Z","size":476,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-31T12:27:20.544Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luckcoding.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-07-05T15:37:31.000Z","updated_at":"2018-07-06T07:59:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"67cb8f23-18c6-4529-a31a-f236d669e7b4","html_url":"https://github.com/luckcoding/mongoose-validation","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luckcoding%2Fmongoose-validation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luckcoding%2Fmongoose-validation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luckcoding%2Fmongoose-validation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luckcoding%2Fmongoose-validation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luckcoding","download_url":"https://codeload.github.com/luckcoding/mongoose-validation/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239896308,"owners_count":19715001,"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":[],"created_at":"2024-11-08T09:29:42.888Z","updated_at":"2026-03-06T20:30:23.127Z","avatar_url":"https://github.com/luckcoding.png","language":"JavaScript","readme":"# mongoose-validation\n\n[![npm version](https://img.shields.io/npm/v/mongoose-validation.svg)](https://www.npmjs.com/package/mongoose-validation)\n\nA magical parameter verifier. Support koa.\n\n## Installation\n\n```\nnpm install mongoose-validation\n```\n\n## Usage\n\n```javascript\n// app\nconst validation = require('mongoose-validation')\napp.use(validation({\n  throwError: true,\n  mongoose: require('mongoose'),\n  errorFormatter: function (errors) {\n    return {\n      code: 'VD99',\n      message: 'error',\n      stack: errors,\n    }\n  }\n  customValidators: {\n    isEmail: {\n      validator: (value) =\u003e /^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$/.test(value),\n      message: 'not an Email'\n    },\n    isPhone: function (value) {\n      return /^1[3|4|5|7|8]\\d{9}$/.test(value)\n    }\n  }\n))\n\n// controller\ntry {\n  await ctx.mongooseValidate({\n    data: ctx.request.body, // params\n    necessary: ['name', 'email'], params can`t be an enpty\n    optional: ['age'], // params can be null\n    schema: { // check the params not`t in the mongoose schema paths\n      mobile: {\n        validate: function(v) {\n          return new Promise(function(resolve, reject) {\n            setTimeout(function() {\n              resolve(false)\n            }, 5)\n          })\n        }\n      },\n      other: { type: String },\n      ...\n    }\n  }, UserMongooseModel) // validate params base on this mongoose model\n} catch (e) {\n  // handle error\n}\n```\n\n## initial Options\n\n**require('mongoose-validation')(options)**\n\n* options.mongoose: require('mongoose')\n* options.errorFormatter: function (errors) { return errors }\n* options.throwError: {Bolean} Default:false //if get an Error form and throw it\n* options.customValidators: {Object} same as mongoose validate\n\n## Middleware Options\n\n### `mongooseValidate`\n\nfunction(options:Object =\u003e [data, necessary, optional, schema], mongooseModel?)\n\n* options.data: {Object} request parmas\n* options.necessary: {Array} necessary validate paths\n* options.optional: {Array} validate white list paths\n* options.schema: {Object} custom validate, is not the mongoose path, and it must is a mongoose schema\n\n### `_validationMongooseErrors`\n\nreturn validate errors, default value: `[]`","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluckcoding%2Fmongoose-validation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluckcoding%2Fmongoose-validation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluckcoding%2Fmongoose-validation/lists"}