단순 코드 기록/Node

Node_DB의 컬럼과 로우 출력

일일일코_장민기 2024. 3. 25. 13:18
728x90

 

const express = require("express");
const app = express();

//서버 listen
const server = app.listen(3004, ()=>{
    console.log("Start Server: loocalhost: 3004");
});

//__dirname: 현재 디렉토리
//page 경로 설정
app.set("views", __dirname + "/views");
app.set("view engine", "ejs");
app.engine("html", require("ejs").renderFile);

app.get("/", function(req, res){
    res.render("index2.html");                                    //index2.html
})


//1. database
const oracledb = require("oracledb");
oracledb.initOracleClient();
const dbconfig = require("./dbconfig.js");

//2. 브라우저에서 불러오기
app.get("/select", function(req, res){
    getSelection(req, res);
})

//3. 브라우저에서 불러오기 위한 코드
async function getSelection(req, res){
    let connection;
    try {
        connection = oracledb.getConnection({
            user: dbconfig.user,            //DB 아이디
            password: dbconfig.password,    //DB 비밀번호
            connectString: dbconfig.xid,    //localhost: 1521/xe
        })

        const result = (await connection).execute("select * from dept",    //콜백 함수
            function(error, data){
                if(error){
                    console.log(error);
                }

                var cCols = "";
                var cRows = "";
                for(let i = 0; i < data.metaData.length; i++) {    //컬럼 찍기
                    cCols += data.metaData[i].name;
                    cCols += "\t\t"
                }
                for(let i = 0; i < data.rows.length; i++) {         //데이터 찍기
                    var ddata = data.rows[i];
                    for (let j = 0; j < ddata.length; j++) {
                        cRows += ddata[j]+"\t\t";
                    }
                    cRows += "\n";
                }

                console.log(cCols);
                console.log("===============================================")
                console.log(cRows);

                res.send(data.rows);                            //화면에 출력
                //res.send(data.metaData[0].name);              //출력되지 않음 (Cannot set headers after they are sent to the client)
            });  
    } catch (error) {
        console.log(error);
    } finally {
        if(connection){
            try {
                (await connection).close;
            } catch(error){
                console.log("error: ", error);
            }
        }
    }
}

 

 


console.log("실행 후: ", data);에서 출력
==>>
metaData: [
    {
      name: 'DEPTNO',
      dbType: [DbType DB_TYPE_NUMBER],
      nullable: false,
      isJson: false,
      isOson: false,
      precision: 2,
      scale: 0,
      dbTypeName: 'NUMBER',
      fetchType: [DbType DB_TYPE_NUMBER]
    },
    {
      name: 'DNAME',
      dbType: [DbType DB_TYPE_VARCHAR],
      nullable: true,
      isJson: false,
      isOson: false,
      byteSize: 14,
      dbTypeName: 'VARCHAR2',
      fetchType: [DbType DB_TYPE_VARCHAR]
    },
    {
      name: 'LOC',
      dbType: [DbType DB_TYPE_VARCHAR],
      nullable: true,
      isJson: false,
      isOson: false,
      byteSize: 13,
      dbTypeName: 'VARCHAR2',
      fetchType: [DbType DB_TYPE_VARCHAR]
    }
  ],
  rows: [
    [ 10, 'ACCOUNTING', 'NEW YORK' ],
    [ 20, 'RESEARCH', 'DALLAS' ],
    [ 30, 'SALES', 'CHICAGO' ],
    [ 40, 'OPERATIONS', 'BOSTON' ],
    [ 50, 'qweqwe', 'qweqwe' ]
  ]


console.log("data.rows: ", data.rows);에서 출력
==>>
data.rows: [ [ 10, 'ACCOUNTING', 'NEW YORK' ], [ 20, 'RESEARCH', 'DALLAS' ], [ 30, 'SALES', 'CHICAGO' ], [ 40, 'OPERATIONS', 'BOSTON' ], [ 50, 'qweqwe', 'qweqwe' ] ]


console.log(cCols);
console.log(cRows); 에서 출력

DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 qweqwe qweqwe

 

'단순 코드 기록 > Node' 카테고리의 다른 글

Node_99번 부서 중복insert/update/delete/Table  (0) 2024.03.25
Node_10번 부서 출력 + insert  (0) 2024.03.25
Node_DB연결  (0) 2024.03.25
Node_서버 가동 및 html파일 연결  (0) 2024.03.25
Node_00_설치  (0) 2024.03.05