Как сформировать и получить вложенный объект JSON из запроса с помощью oracledb с использованием NodeJS с ExpressJS

Я должен запросить набор данных, которые, как я ожидал, будут вложенными, чтобы сделать их более значимыми. При использовании ExpressJS с платформой oracledb для запроса данных, как показано ниже,

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")
            }
          });
      });

  });

Я использовал для запроса, и результат запроса будет что-то вроде,

[   
    {
        "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"
    }   
]

На самом деле мне нужно сформировать JSON путем запроса таким образом, чтобы вывод был

{
  "REG_FIELDS": [{
    "REG_ID": 1, "REG_TEXT": "User Name", "REG_VALUE": "", "REG_IS_REQUIRED": "true",
    "REG_TYPE": "text"
  }, {
    "REG_ID": 2, "REG_TEXT": "Password", "REG_VALUE": "",
    "REG_IS_REQUIRED": "true", "REG_TYPE": "password"
  }, {
    "REG_ID": 3, "REG_TEXT": "First Name",
    "REG_VALUE": "", "REG_IS_REQUIRED": "true", "REG_TYPE": "text"
  }, ],
  "MAINHEADING": "CONSUMER SIGNUP",
  "SUBHEADER": "ACCOUNT - CONSUMER - SIGN UP",
  "IS_ACTIVE": "TRUE"
};

Я ищу такой вывод с вложенными значениями. Мое требование будет иметь больше вложенных значений. Я ищу отправную точку.

Я также пытался использовать ORM с ExpressJS, но у каждого есть свой недостаток, когда я хотел использовать ExpressJS с Oracle. Благодарю.

1 ответ

Решение

Вы можете выполнить несколько запросов, а затем использовать результаты для построения более сложной структуры данных, которую вы отправляете. Посмотрите на это: https://jsao.io/2015/07/relational-to-json-with-node-js/

Также обратите внимание, что вы не должны отправлять ошибки базы данных клиенту. Это может открыть вам возможность внедрения SQL-кода, поскольку позволяет людям узнать больше о вашей базе данных, чем им следовало бы. Отправьте клиенту общее сообщение и зарегистрируйте фактическую ошибку, чтобы вы могли ее отладить.

Мне интересно, какие ORM вы пробовали и каковы были недостатки?

Другие вопросы по тегам