Wie erzeuge ich automatisch ein Objekt mit den dazugehörigen Daten eines LEFT JOINs?

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Tabula_Rasa

Mitglied
12 Mai 2017
277
2
18
Hallo zusammen,

ich habe folgende SQL-Query
Javascript:
    db.query(
      'SELECT posts.* , users.username from posts LEFT JOIN users ON posts.u_id = users.id',
      (err,results) => {
        if(err) return res.status(500).json(err);
        else {
          return res.status(200).json(results);
        }
      }
    )

die mir folgendes Array zurückgibt:
Javascript:
[
   {id:3, description: "First post", img: "../assets/test.png",  username:"testUser"}
]

Jedoch möchte ich, dass die Daten des LEFT JOINs in ein eigenes Objekt getan werden:

Javascript:
[
  {id:3, description: "Fist post", img: "../assets/test.png", user: {username: "testUser"}}
]

Wie erzeuge ich für jeden LEFT JOIN ein eigenes Objekt, sodass die Daten aus einer anderen Tabelle stets in einem separaten Objekt gespeichert werden?
 
Zuletzt bearbeitet:

Sempervivum

Senior HTML'ler
18 Oktober 2016
2.512
478
83
68
Ist das node.js? Wie man das direkt aus der Query heraus erreichen kann, weiß ich leider nicht aber durch eine Nachverarbeitung sollte es kein Problem sein:
Code:
        const arr = [
            { id: 3, description: "First post", img: "../assets/test.png", username: "testUser" }
        ];
        modarr = arr.map((item) => {
            let username = item.username;
            delete item.username;
            item.user = { username: username };
            return item;
        });
        console.log(modarr);
 
  • Like
Reaktionen: Tabula_Rasa

jonas3344

Aktives Mitglied
25 Oktober 2019
168
44
28
38
Ich glaube nicht, dass das geht. SQL liefert nur Spalten zurück, keine Objekte. Das was du dann zurückbekommst erstellt die jeweilige Erweiterung (in deinem Fall also mysql.js) Du müsstest das selbst schreiben, entweder erweiterst du die mysql-Klasse oder einfach als Funktion, wie @Sempervivum das vorschlägt, was wahrscheinlich der einfachere Weg ist.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Tabula_Rasa
Werbung:

Neueste Beiträge