29 lines
637 B
JavaScript
29 lines
637 B
JavaScript
function validate(schema, property) {
|
|
// Return a Koa middleware function
|
|
return (ctx, next) => {
|
|
if (!schema) {
|
|
return next()
|
|
}
|
|
let params = null
|
|
if (ctx[property] != null) {
|
|
params = ctx[property]
|
|
} else if (ctx.request[property] != null) {
|
|
params = ctx.request[property]
|
|
}
|
|
const { error } = schema.validate(params)
|
|
if (error) {
|
|
ctx.throw(400, `Invalid ${property} - ${error.message}`)
|
|
return
|
|
}
|
|
return next()
|
|
}
|
|
}
|
|
|
|
module.exports.body = schema => {
|
|
return validate(schema, "body")
|
|
}
|
|
|
|
module.exports.params = schema => {
|
|
return validate(schema, "params")
|
|
}
|