Проверка схемы Joi, которая выражает отношения между полями

Есть ли способ выразить отношения в данных с помощью Joi?

e.g.

  const schema = ({
    min: number(),
    max: number(),
  });

Могу ли я добавить правило проверки, которое говорит data.min < data.max?

РЕДАКТИРОВАТЬ: добавление примеров

Пример Ankh - это то, что действительно помогло мне, так как документы немного скудны. тесты Joi для ref помогли с остальными refфункции.

Также ниже приведен мой эксперимент, основанный на ответе Анха.

describe.only("joi features", () => {
  const minMax = {
    min: Joi.number().less(Joi.ref("max")),
    max: Joi.number(),
    deep: {
      min: Joi.number().less(Joi.ref("max")),
      max: Joi.number().required()
    },
    minOfAll: Joi.number().less(Joi.ref("max")).less(Joi.ref("deep.max"))
  };
  it("handles max and min relationships", () => {
    expect(Joi.validate({ min: 0, max: 99 }, minMax).error).to.not.exist;
    expect(Joi.validate({ deep: { min: 0, max: 99 } }, minMax).error).to.not.exist;

    expect(Joi.validate({ min: 99, max: 0 }, minMax).error).to.exist;
    expect(Joi.validate({ deep: { min: 99, max: 0 } }, minMax).error).to.exist;

    expect(Joi.validate({ deep: { max: 99 }, max: 99, minOfAll: 88 }, minMax).error).to.not.exist;
    expect(Joi.validate({ deep: { max: 25 }, max: 99, minOfAll: 88 }, minMax).error).to.exist;
    expect(Joi.validate({ deep: { max: 99 }, max: 25, minOfAll: 88 }, minMax).error).to.exist;
  });
});

person Ashley Coolman    schedule 25.05.2017    source источник


Ответы (1)