簡體   English   中英

服務器和客戶端驗證器-庫

[英]Server and client side validators - library

什么是在服務器和客戶端上驗證對象的最佳庫? 我正在搜索更簡單的東西-一個簡單的配置文件,然后在兩側都類似:

var is_valid =驗證(object,validationRule);

但是它應該有許多驗證選項,例如:

obj: A, B, C, D;
A = something;
B, C - Required;
D - Not needed/hidden


D = something:
C - Required;
B - optional/has value
A - Not needed/hidden

在客戶端,我使用Aurelia框架。 它有一個驗證插件,但我不知道如何在服務器上使用它。 這意味着,我想在服務器和客戶端上使用相同的functionValidation和configValidation;

或者,也許-有一個可以與aurelia-validation一起使用的插件?

在服務器上,我使用Node.js作為后端;

我也正在尋找這個-很好,我們不必重復我們的工作。

尋找優秀的服務器端驗證只(它的權力沃爾瑪和PayPal是非常快的) -但它只是有點可以使用它在客戶端上。

然后是validate.js ,看起來它可能同時完成這兩項工作。

我在Reddit上提出了一個問題,因為我找不到太多信息。

我可以使用此提交作為參考來實現一些東西: https : //github.com/aurelia/validation/commit/1b701ab

我對aurelia來說還很陌生,所以這幾乎是一個復制粘貼工作,但它確實有效,所以我想我對此很滿意。 這些都是打字稿中的內容,但是您可以了解JS實現的總體思路。

import 'aurelia-polyfills';
import { initialize } from 'aurelia-pal-nodejs';
import { Container } from 'aurelia-dependency-injection';
import { configure as configureBindingLanguage } from 'aurelia-templating-binding';
import { configure as configureValidation, ValidationRules, Validator, Rule, ValidateResult, ControllerValidateResult } from 'aurelia-validation';
import { HandlerError } from 'api/handler.error';

class AureliaValidator {
  private validator: Validator

  constructor() {
    initialize();
    const container = new Container();
    configureBindingLanguage({ container });
    configureValidation({ container });

    this.validator = container.get(Validator);
  }

  validateObject(object: any, rules: Rule<any, any>[][]): Promise<ValidateResult[]> {
    return this.validator.validateObject(object, rules).then(results => {
      let isValid = results.every(r => r.valid);
      let errors = results.map(r => r.message).filter(m => !!m);

      if (!isValid) throw new Error(errors[0]);

      return results;
    });
  }
}

export const aureliaValidator = new AureliaValidator();

然后按如下方式使用

import { ValidationRules } from 'aurelia-validation';
import { aureliaValidator } from "validator.ts";

let foo = {
  bar: undefined
}

let rules = ValidationRules.ensure('bar').required().rules

// This will fail
aureliaValidator.validateObject(req.body, rules)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM