【问题标题】:ADONISJS: validate some data outside the HTTP request inADONISJS:验证HTTP请求之外的一些数据
【发布时间】:2022-01-04 05:45:12
【问题描述】:

这是我的验证器类

 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)

简单地说,我想使用 HTTP 请求之外的验证器类来验证 lat、long、radius 和 distance。

【问题讨论】:

  • 这应该可以工作...我认为问题在于您的验证器类在构造函数中对 ctx 具有依赖性。尝试删除它。
  • @hlozancic 谢谢大家,我正在发送数据,我的验证器期待ctx,再次感谢

标签: adonis.js adonisjs-ace


【解决方案1】:

Coz 验证器构造函数要求 ctx 并且我们正在传递数据 我们必须更新验证器构造函数并删除对ctx 的依赖并接受数据

现在我的验证器接受数据

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-08
    • 2023-03-22
    • 2019-09-02
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 2020-02-17
    相关资源
    最近更新 更多