0

Я использую tv4 (json-schema validator) для проверки (на стороне клиента) объекта с помощью json-schema, который работал очень хорошо.Проверка одного атрибута объекта с помощью json-схемы

Но когда я изменяю одно значение атрибута, я хочу, чтобы это значение было единственным, которое должно быть проверено.

Например, у меня есть пользователь:

var user = { Name: 'Username', Age: 20 }; 

и схема:

{ 
    "title": "UserValidation", 
    "type": "object", 
    "properties": { 
     "Name": { 
      "minLength": 4 
     }, 
     "Age": { 
      "type": "int" 
     } 
    } 
} 

И когда я только изменить название, я не хочу, чтобы проверить, если атрибут «Возраст " действует.

Причина: Когда у меня есть большой объект (с подмоделими и т. Д.), Он будет проверять все свойства. И я не знаю, будет ли это проблемой производительности (когда-нибудь ...).

  • Это возможный случай со схемой проверки?
  • Или есть лучше способов проверки объектов?

Я использую AngularJS btw.

С уважением и благодарностью.

ответ

1

У вас нет проблемы с производительностью, пока у вас не возникнет проблема с производительностью. :)

Нет технической причины, чтобы валидатор с частичным обновлением не должен существовать (я знаю, по крайней мере, один, но это не совсем скоро). Существуют также более быстрые «с нуля» валидаторы (some with benchmarks), в том числе некоторые с очень похожими API/сообщениями об ошибках, поэтому, если в будущем вы начнете видеть проблемы с производительностью, тогда вы можете переключиться без особых проблем.

Однако, учитывая, что это происходит на стороне клиента (так что у вас нет проблем с масштабированием с большим количеством пользователей), я бы об этом не беспокоился.

+0

Спасибо, мне очень помогли! :) – DevTrong

2

Я думаю, вам нужно будет выбрать подсхему, чтобы проверить суб-свойство. Это должно быть легко сделать, проверяя имя пользователя.Name с schema.properties.Name.

Проблема с просто проверкой подсобственности заключается в том, что некоторые части проверки не относятся к самому свойству. Например, на объекте может быть требуемый массив.

+1

Хотя это может работать для некоторых схем, в общем, это невозможно. Классы типа 'oneOf' или' dependencies' означают, что изменения в одной части данных могут повлиять на совершенно другую область (включая удаление/добавление схем). – cloudfeet

Смежные вопросы