2017-08-29 1 views
1

Ich muss eine Reihe von Daten abfragen, von denen ich erwartet habe, dass sie verschachtelt sind, um sie sinnvoller zu machen. Wenn Express.js mit oracledb Rahmen unter Verwendung von Daten, wie unten abfragen,Wie man ein JSON-Objekt aus einer Abfrage mit OracleB unter Verwendung von NodeJS mit ExpressJS verschachtelt und verschachtelt bekommt

oracledb.getConnection(getConnectAttr, function(err,connection){ 
    if(err){ 
     res.set('content-type','application/json'); 
     res.status(500).send(JSON.stringify({ 
     status:500, 
     message:"Error connection to DB", 
     detailed_message:err.message 
     })); 
     return; 
    } 
     connection.execute("select * from REGISTRATION_MASTER", {}, {outFormat : oracledb.OBJECT 
     },function(err, result){ 
     if(err){ 
      res.set('content-type','application/json'); 
     res.status(500).send(JSON.stringify({ 
     status:500, 
     message:"Error connection the REGISTRATION", 
     detailed_message:err.message 
     })); 
     } 
     else{ 
      res.contentType('application/json').status(200); 
      res.send(result.rows); 
     } 

     //Release the connection 
     connection.release(
      function(err){ 
      if(err){ 
       console.error(err.message); 
      } 
      else{ 
       console.log("GET/comments : connection released") 
      } 
      }); 
     }); 

    }); 

ich zur Abfrage und das Abfrageergebnis wird so etwas wie sein

[ 
    { 
     "REG_ID": 1, 
     "REG_TEXT": "User Name", 
     "REG_VALUE": null, 
     "REG_IS_REQUIRED": "true", 
     "REG_TYPE": "text" 
    }, 
    { 
     "REG_ID": 2, 
     "REG_TEXT": "Password", 
     "REG_VALUE": null, 
     "REG_IS_REQUIRED": "true", 
     "REG_TYPE": "password" 
    }, 
    { 
     "REG_ID": 3, 
     "REG_TEXT": "First Name", 
     "REG_VALUE": null, 
     "REG_IS_REQUIRED": "true", 
     "REG_TYPE": "text" 
    } 
] 

Ich brauche eigentlich eine json zu bilden, indem in einer solchen Abfrage eine Möglichkeit, dass die Ausgabe wie folgt sein sollte:

Ich bin auf der Suche nach einer solchen Ausgabe mit geschachtelten Werten. Meine Anforderung wird mehr verschachtelte Werte haben. Ich suche nach einem Startpunkt.

Ich habe auch versucht, ORMs mit ExpressJS, aber jeder hat seinen eigenen Nachteil bei der Suche nach ExpressJS mit Oracle. Vielen Dank.

Antwort

2

Sie können mehrere Abfragen ausführen und dann die Ergebnisse verwenden, um eine komplexere Datenstruktur zu erstellen, die Sie senden. Werfen Sie einen Blick darauf: https://jsao.io/2015/07/relational-to-json-with-node-js/

Beachten Sie auch, dass Sie keine Datenbankfehler an den Client senden sollten. Dies kann Sie für die SQL-Injection öffnen, da die Benutzer mehr über Ihre Datenbank erfahren können, als sie sollten. Senden Sie dem Client eine allgemeine Nachricht und protokollieren Sie den tatsächlichen Fehler, damit Sie ihn debuggen können.

Ich bin neugierig, was ORMs haben Sie versucht und was waren die Nachteile?

+0

Ich werde genau darauf eingehen. Sieht so aus, als ob es mir gibt, wonach ich suche. Die ORMs, die ich sehe, sind Sworm (https://github.com/featurist/sworm), Typeorm (https://github.com/typeorm/typeorm) – Joseph

Verwandte Themen