1
0
Fork 0

Handle multiple request body models

This commit is contained in:
Alan Plum 2016-09-29 14:16:42 +02:00
parent 2816d1d328
commit fe4c4d166f
No known key found for this signature in database
GPG Key ID: 8ED72A9A323B6EFD
1 changed files with 11 additions and 2 deletions

View File

@ -23,6 +23,7 @@
// //////////////////////////////////////////////////////////////////////////////
const _ = require('lodash');
const joi = require('joi');
const assert = require('assert');
const typeIs = require('type-is');
const mediaTyper = require('media-typer');
@ -110,12 +111,16 @@ exports.parseRequestBody = function parseRequestBody (def, req) {
exports.validateRequestBody = function validateRequestBody (def, req) {
let body = req.body;
const schema = def.model && (def.model.schema || def.model);
let schema = def.model && (def.model.schema || def.model);
if (!schema) {
return body;
}
if (schema.isJoi) {
if (def.multiple) {
schema = joi.array().items(schema).required();
}
const result = schema.validate(body);
if (result.error) {
@ -127,7 +132,11 @@ exports.validateRequestBody = function validateRequestBody (def, req) {
}
if (def.model && def.model.fromClient) {
body = def.model.fromClient(body);
if (def.multiple) {
body = body.map((body) => def.model.fromClient(body));
} else {
body = def.model.fromClient(body);
}
}
return body;