• 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

Aruba Cloud - Virtual Private Server VPS
+1 głos
421 wizyt
pytanie zadane 19 stycznia 2021 w JavaScript przez icytower Bywalec (2,170 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,170 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ź 137 wizyt
+2 głosów
2 odpowiedzi 284 wizyt
+1 głos
1 odpowiedź 1,249 wizyt

93,322 zapytań

142,319 odpowiedzi

322,387 komentarzy

62,651 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...