• 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

+1 głos
515 wizyt
pytanie zadane 19 stycznia 2021 w JavaScript przez icytower Bywalec (2,250 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,250 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ź 182 wizyt
+2 głosów
2 odpowiedzi 351 wizyt
+1 głos
1 odpowiedź 1,608 wizyt

93,631 zapytań

142,553 odpowiedzi

323,056 komentarzy

63,138 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2658p. - dia-Chann
  2. 2630p. - DziarnowskiJ
  3. 2590p. - Łukasz Piwowar
  4. 2550p. - raydeal
  5. 2529p. - Adrian Wieprzkowicz
  6. 2478p. - rucin93
  7. 2348p. - Łukasz Eckert
  8. 2340p. - CC PL
  9. 2184p. - Maurycy W
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1494p. - ssynowiec
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...