Rolf b: Auf mysql Result in node.js zugreifen.

Beitrag lesen

Hallo Uri,

ich bin kein node Experte, aber schnelles googeln führt mich bezüglich app.get zu Express.js und dass man hier Routen definiert, die dann von node behandelt werden.

Allerdings verstehe ich deine Vorgehensweise nicht wirklich und möglicherweise rühren deine Probleme daher, dass Du das auch nicht tust 😉

/count_buildings - ermittelt eine Anzahl von Gebäuden und liefert die Anzahl als JSON an den Aufrufer zurück.

Wichtig zu verstehen ist, dass die hier hinterlegte Callback-Funktion, d.h. die SQL Query, erst stattfindet, wenn der Client die /count_buildings URL abruft. Nicht vorher.

Als zweites möchtest Du für jedes gefundene Gebäude eine eigene Route definieren: /Buildings_Details-n, mit n=0,1,2,... und du verwendest lupus, um die Definitionsschleife asynchron zu kapseln.

Dieser Ansatz hat eine MENGE Probleme.

  1. Findet die Routendefinition für die Details zu einem Zeitpunkt statt, wo der der Client die Gebäudeanzahl noch gar nicht abgerufen hat.
  2. Ist es eigentlich nicht sinnvoll, diese Anzahlabfrage und die Routendefinition für die Details zu koppeln. Was passiert, wenn jemand /count_buildings mehrfach aufruft und dein Code das täte, was du willst? Du würdest alle Routen mehrfach definieren.
  3. Ist lupus, wenn ich die Doku richtig lese, dann interessant, wenn Du VIELE Schleifendurchläufe hast und eine for() Schleife einfach ein Ressourcenschwein wäre. Das hast Du hier aber nicht. Oder wenn doch, beginnen die Probleme erst richtig.
  4. Ist eine eigene Route für jedes Gebäude sicherlich nicht die richtige Idee. Wenn lupus hier tatsächlich sinnvoll wäre, dann würdest Du damit tausende von Routen definieren, und dann hättest Du express.js wahrscheinlich zu bimmelbahn.bas degradiert. Besser wäre, wenn der Client die Gebäudenummer als Parameter übergibt, also /Buildings_Details/n statt /Building_Details-n. Wie man das genau mit express.js macht, weißt Du vermutlich besser als ich.
  5. Ist die Identifikation eines Gebäudes per laufender Nummer vermutlich auch nicht sinnvoll.

Meine Vorstellung einer sinnvollen Lösung wäre eigentlich diese:

  • Zwei Routen definieren: /buildings_index und /buildings_details/id
  • /buildings_index liefert dem Client eine Liste aller Gebäude, mit ID und Name oder so, woraus der Client eine Übersicht mit Detail-Links aufbereiten kann.
  • /buildings_details/id wäre dann bookmarkable und kann die Details zu einem bestimmten Gebäude ermitteln.

Rolf

--
Dosen sind silbern