• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

express-validator(node) zagnieżdżone objekty i warunek

Object Storage Arubacloud
+1 głos
292 wizyt
pytanie zadane 19 stycznia 2021 w JavaScript przez icytower Bywalec (2,110 p.)

hej, mam pytanie dotyczące express-validatora(node). potrzebuję sprawdzić obiekt ale nie do końca wiem jak to ogarnąć z kilku powodów.
1. sporo zagnieżdżeń
2. potrzebny warunek w trakcie sprqawdzania, ponieważ zależnie od tego co jest w danym parametrze są dwie drogi jak objikt może wyglądać.
przykładowy obiekt w json:
 

{
    "name": "Meter",
    "owner": "example",
    "workPerMeter": {
        "is": true,
        "materials": [{
            "name": "one",
            "quantity": 10,
            "pricePerItem": 15
        },
        {
            "name": "two",
            "quantity": 15,
            "pricePerItem": 50
        }
        ],
        "difficults": [{
            "name": "stairs",
            "converter": 0.2
        },
        {
            "name": "problem with transport",
            "converter": 0.1
        }
        ],
        "materialsSumPrice": 750,
        "numbersOfMeters": 20,
        "pricePerMeter": 30,
        "totalPriceNetto": 1339.76,
        "totalPriceBrutto": 1647.9
    },
    "workPerDay": {
        "is": false
    }
}

lub

{
    "name": "Day",
    "owner": "example",
    "workPerMeter": {
        "is": false
    },
    "workPerDay": {
        "is": true,
        "works": [{
            "name": "one",
            "materials": [{
                "name": "paper",
                "quantity": 10,
                "pricePerItem": 2
            }],
            "activities": [{
                "name": "grinding",
                "numberOfWorkingDays": 2
            },
            {
                "name": "assembly",
                "numberOfWorkingDays": 1
            }
            ],
            "sumOfWorkingDays": 3
        }],
        "totalMaterialsSumPrice": 20,
        "totalSumOfWorkingDays": 3,
        "moneyOfTheDay": 400,
        "totalPriceNetto": 1216.26,
        "totalPriceBrutto": 1496
    }
}


jeżeli workPerMeter.is === true to ma sprawdzać ten obiekt, jeżeli nie to ma iść dalej
jeżeli workPerDay.is === true to samo.
widziałem w dokumentacji, ze można użyć funkcji checkSchema() ale wtedy nie mam jak dać tego warunku, a jeżeli użyję check("workPerMeters").if(body("is")) to nie mogę użyć schema.
chyba, że czegoś nie rozumiem albo nie ogarnąłem.
jak to zrobić żeby było w miarę czytelne i nie trzeba było ręcznie sprawdzać całości czyli pisać specjalnie middleware?

komentarz 19 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

1. sporo zagnieżdżeń

Z kodu, który wstawiłeś wynika, że dla property is, które ma wartość typu boolean, jest tylko jedno zagnieżdżenie. Czy ta struktura może wyglądać inaczej, tj. mieć takie boolean'owe propertisy bardziej zagnieżdżone i/lub na różnych poziomach, czy one zawsze będą na jednym poziomie?

komentarz 19 stycznia 2021 przez icytower Bywalec (2,110 p.)
może być, że będą głębiej ale jeszcze nie wiem. a property is to jest tylko informacja czy praca za metr czy praca za dzień.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 112 wizyt
+2 głosów
2 odpowiedzi 170 wizyt
+1 głos
1 odpowiedź 722 wizyt

92,568 zapytań

141,420 odpowiedzi

319,618 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...