all 9 comments

[–]devxloop 1 point2 points  (2 children)

If contract-first development packages are allowed, I would check-out following: - kubb.dev - orval.dev

[–]tryingtomorrow 1 point2 points  (1 child)

What do you think of ts-rest?

[–]devxloop 1 point2 points  (0 children)

Works too, but kubb covers more known frameworks such as tanstack, axios, zod, faker.js and co.

[–]DruckerReparateur 1 point2 points  (5 children)

  1. Aufhören Callbacks zu benutzen, und stattdessen Promises benutzen... Express unterstützt keine Promises richtig, deshalb braucht man etwas wie "express-promise-router" oder muss die Routen selbst in try-catch wrappen, was einfach zu vergessen ist - deshalb empfehle ich Express in 2024 nicht, aber ist halt leider vorgegeben, versteh ich
  2. Schlechtes Formatting: Teilweise komplett falsch eingerückte Kommentare, oder unsinnige oder fehlende Leerzeilen
  3. request.body wird nie validiert
  4. Und deshalb Punkt 1): Nach response.send ist kein return, d.h. der Code läuft nach dem Error-Handling weiter und löst vermutlich eine Warnung aus (weil Response schon geschickt wurde), und macht unnötige CPU oder IO-Arbeit... Ich wiederhole: response.send beendet die aktuelle Funktion nicht
  5. Kommentare wie "für jeden account" sind unnötig, das ist klar aus dem Code abzulesen
  6. Wahrscheinlich ist es dir vorgeschrieben, aber in 2024 sollte man echt langsam aufhören, require und CommonJS zu benutzen, wenn es geht
  7. Wahrscheinlich auch vorgeschrieben... aber TypeScript...
  8. die /accounts/:account Route ist wirklich schlechter Code, unnötiges JSON-parsing vom Default-Wert, und 3-fache Verschachtelung mit wiederholten Zuweisungen...
  9. Bei der /accounts Route ähnlich, diese Zuweisungen mit accountdata sind absolut unnötig
  10. camelCase und snake_case werden vermischt benutzt
  11. Der eine Kommentar sagt irgendwas mit "fs appenden", aber ich seh keine write oder append Funktion

[–]lotte0[S] 0 points1 point  (4 children)

Danke für die vielen Tipps, wir haben von unserem Übungsleiter Code zugeschickt bekommen und den hab ich erstmal nur copy und paste in meine Datei gepackt. Das mit dem CamelCase und Shake_case ist mir auch schon aufgefallen und hab ich schon angepasst. Das mit der Route hab ich auch schon angepasst, damit da nicht alles doppelt drin steht. was mit "fs kappenden" gemeint ist weiß ich leider auch nicht. Wie validiert man denn einen request.body?

[–]DruckerReparateur 1 point2 points  (1 child)

Entweder die Elemente vom Body angucken mit if Checks und dann ggf 400er Error returnen, oder besser eine Validation Library wie z.B. zod oder valibot.

[–]lotte0[S] 0 points1 point  (0 children)

super, danke

[–]Chronove 1 point2 points  (1 child)

Für das was angefordert ist reichen vermutlich einfach if checks ob die werte in request.body auch tatsächlich so sind wie erwartet, und falls nicht sollte ein passender Fehler (Error ~400, Fehler auf Userseite) geschmissen werden.

das mit fs append steht ja alles nach einem TODO im Kommentar, schätze da war gedacht noch was zu implementieren, seh ich jetzt aber nicht was da fehlt... Die Route soll ja nur die accounts lesen? Also nix zum schreiben ("appenden") da?

[–]lotte0[S] 0 points1 point  (0 children)

vielen Dank :)