본문 바로가기

node.js

node.js 에서 DOM 요소 사용하기

도커로 Mysql 깔아서 실습을 해보던 중에 다음과 같은 문제에 봉착 하였다.

console.log("index here");
const mysql= require("mysql2");

const connection= mysql.createConnection({
    host : 'localhost',
    user : 'hr',
    password : '1234',
    database : 'hr',
    connectTimeout : 30,
    port : 3306

});

connection.connect((err)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log("mysql-docker에 연결되었습니다.");

});

    const inLine=document.getElementById('addSubject');
    const inValue=inLine.value;
    const insertQuery = 'INSERT INTO REG_DATA (CRS_NM) VALUES (?)';
     
    connection.query(insertQuery,inValue,(error,result,field)=>{
        if(error){
            console.log("에러가 발생하였습니다.");

        }
        console.log("데이터입력 완료");
    });
    connection.end();
    //연결종료


connection.end();

 

node.js 에서 js의 DOM에 접근해서 값을 뽑아와야 하는 경우가 생겼다.

 

열심히 찾아보니 Ajax처리로 값을 넘겨주는 조금 어려운 방식이 있었고

 

StackOverflow에서 찾아보니 JSDOM이라는 npm 패키지가 있어서 설치해 보았다.

 

https://stackoverflow.com/questions/52256799/how-to-use-document-getelementbyid-in-nodejs

 

how to use document.getElementById() in Nodejs

i'm trying to get elements by id from an html file in a js file using nodejs. I'm getting the error 'document id not defined' because node doesn't provide a document object model by default. So ho...

stackoverflow.com

 

 

쓸려고 하는 파일 경로에 폴더에가서 npm install jsdom 쳐서 Package.json 에 추가해준다.

 

https://github.com/jsdom/jsdom

 

GitHub - jsdom/jsdom: A JavaScript implementation of various web standards, for use with Node.js

A JavaScript implementation of various web standards, for use with Node.js - jsdom/jsdom

github.com

const jsdom = require("jsdom");
const { JSDOM } = jsdom;

const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`);
console.log(dom.window.document.querySelector("p").textContent); // "Hello world"

 

해당 깃을 한번 읽어보면 어떻게 활용할지는 답은 나왔다.