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 = {};
}
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.
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 = {};
}