0

This is my validator class

 import { schema, rules } from "@ioc:Adonis/Core/Validator";
    import { HttpContextContract } from "@ioc:Adonis/Core/HttpContext";
    
    export default class CreateUserValidator {
      constructor(protected ctx: HttpContextContract) {}
    
      schema = schema.create({
        lat: schema.string({}, [
          rules.regex(/^[-]?(([0-8]?[0-9])\.(\d+))|(90(\.0+)?)$/),
        ]),
    
        lng: schema.string({}, [
          rules.regex(/^[-]?((((1[0-7][0-9])|([0-9]?[0-9]))\.(\d+))|180(\.0+)?)$/),
        ]),
        radius: schema.number(),
        distance: schema.number(),
      });
    
      public messages = {};
    }

This is my controller

import { validator } from '@ioc:Adonis/Core/Validator'
import CreateUser from 'App/Validators/CreateUserValidator'

public async station({
    request,
    response,
  }: HttpContextContract) {
    let inputs: any = await EncyptionManager.decrypt(request.body().inputs);
    inputs = JSON.parse(inputs);

    await validator.validate(
      new CreateUser({
        lat: ainputs.lat,
        long: ainputs.lat,
        radius: ainputs.radius,
        distance: ainputs.distance,
      })
    );
    
    console.log(inputs)

Simply, I want to validate lat, long, radius, and distance using the validator classes outside of the HTTP request.

Smit Gajera
  • 1,001
  • 1
  • 8
  • 26
  • This should work... I think the issue is that your validator class has dependecy for ctx in constructor. Try removing it. – hlozancic Nov 26 '21 at 19:20
  • [@hlozancic](https://stackoverflow.com/users/2039846/hlozancic) Thanks men sorted same i am sending data and my validator expecting `ctx`, Once again thanks – Smit Gajera Nov 27 '21 at 10:59

1 Answers1

0

Coz validator constructor is asking for ctx and we are passing data We have to update the validator constructor and remove the dependency on ctx and accept data

Now my Validator accept the data

import { schema, rules } from "@ioc:Adonis/Core/Validator";
    import { HttpContextContract } from "@ioc:Adonis/Core/HttpContext";
    
    export default class CreateUserValidator {
      constructor() {}
    
      schema = schema.create({
        lat: schema.string({}, [
          rules.regex(/^[-]?(([0-8]?[0-9])\.(\d+))|(90(\.0+)?)$/),
        ]),
    
        lng: schema.string({}, [
          rules.regex(/^[-]?((((1[0-7][0-9])|([0-9]?[0-9]))\.(\d+))|180(\.0+)?)$/),
        ]),
        radius: schema.number(),
        distance: schema.number(),
      });
    
      public messages = {};
    }
Smit Gajera
  • 1,001
  • 1
  • 8
  • 26