Validation.js 792 B

12345678910111213141516171819202122232425262728293031323334
  1. const { Joi: CelebrateJoi, celebrate, errors } = require('celebrate')
  2. const { ObjectId } = require('mongodb-legacy')
  3. const objectIdValidator = {
  4. type: 'objectId',
  5. base: CelebrateJoi.any(),
  6. messages: {
  7. 'objectId.invalid': 'needs to be a valid ObjectId',
  8. },
  9. coerce(value) {
  10. return {
  11. value: typeof value === typeof ObjectId ? value : new ObjectId(value),
  12. }
  13. },
  14. prepare(value, helpers) {
  15. if (!ObjectId.isValid(value)) {
  16. return {
  17. errors: helpers.error('objectId.invalid'),
  18. }
  19. }
  20. },
  21. }
  22. const Joi = CelebrateJoi.extend(objectIdValidator)
  23. const errorMiddleware = errors()
  24. module.exports = { Joi, validate, errorMiddleware }
  25. /**
  26. * Validation middleware
  27. */
  28. function validate(schema) {
  29. return celebrate(schema, { allowUnknown: true })
  30. }