ajv

ajv Валидация по условию, зависимые поля. Несколько if then

const validate = ajv.compile(
    {
        type: "object",
        "properties": {
            "name": {
                type: "string",
                maxLength: 15,
                "isNotEmpty": true,
            },
            "email": { type: "string", format: "email" },
            "count": { type: "number", },
            "price": { type: "number", },
        },
        required: ["name"],
        "allOf": [
            {
                "if": {
                    "properties": { "deliveryType": { const: deliveryTypes.CITY.value } } 
                },

ajv Пример добавления собственной функции проверки и сообщения об ошибке

Пример добавления правила, которое позволяет проверить, что значение состоит не только из пробелов:

Argument of type 'import(".../node_modules/ajv/dist/ajv").default' is not assignable to parameter Ошибка

Argument of type 'import(".../node_modules/ajv/dist/ajv").default' is not assignable to parameter

Ошибка была на версии 2.0.0-beta.2

в качестве решение откатился на предыдущую стабильную версию ajv-formats:
yarn add ajv-formats@1.5.1

ajv Error: strict mode: unknown keyword Ошибка

Error: strict mode: unknown keyword: "name"

При этом проверка происходит так:

        let ajv = new Ajv({ allErrors: true });
        console.log('------------data', data);
        let validate = ajv.compile(
            {
                type:"object",
                "properties": {
                    "name": { "name": "integer" },
                }
            }
        );

Решение

Для примера выше надо писать не:

 "name": { "name": "integer" },

а правильно:

Subscribe to RSS - ajv