당신은 주제를 찾고 있습니까 “nodejs mariadb 연동 – Nodejs mysql 연동시키기“? 다음 카테고리의 웹사이트 https://you.tfvp.org 에서 귀하의 모든 질문에 답변해 드립니다: https://you.tfvp.org/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 코도 이(가) 작성한 기사에는 조회수 1,745회 및 좋아요 38개 개의 좋아요가 있습니다.
- MariaDB 설치
- 간이 table 생성 …
- nodejs 프로젝트 생성 …
- 해당 폴더에 들어가면 package.js 파일 이 자동으로 생성되어 있음
- 커넥터 설치하기
- Visual Studio Code에서 MariaDB 사용 코드 작성 …
- 실행 및 결과 확인
nodejs mariadb 연동 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 Nodejs mysql 연동시키기 – nodejs mariadb 연동 주제에 대한 세부정보를 참조하세요
node.js 와 mysql 을 연동해서 rest API 를 처리하는 영상입니다.
백엔드와 데이터베이스가 어떻게 소통하는지 알 수 있습니다.
nodejs mariadb 연동 주제에 대한 자세한 내용은 여기를 참조하세요.
Node.js | Express + MariaDB 연동하기 (DB연동, CRUD)
Node.js | Express + MariaDB 연동하기 (DB연동, CRUD) · 1. 프로젝트 경로에서 명령어 입력. npm install mysql –save · 2. package.json (/프로젝트 경로 …
Source: kitty-geno.tistory.com
Date Published: 7/11/2022
View: 5096
node.js 웹사이트 개발 – database 연동(mariadb, mysql)
node.js 웹사이트 개발 – database 연동(mariadb, mysql). 두아바 2020. 10. 8. 10:27. 반응형. mariaDB 를 설치합니다. 설치 방법 참고.
Source: askforyou.tistory.com
Date Published: 3/15/2022
View: 2788
NodeJs – MariaDB 연동하기
NodeJs – MariaDB 연동하기 … NodeJs에서 마리아 DB를 사용해보자. … 마리아DB 홈페이지에서 마리아DB를 설치합니다. … 테스트 DB와 테이블을 생성한 후 …
Source: smoh.tistory.com
Date Published: 12/26/2022
View: 6194
Node.js MariaDB 연동 – velog
Node.js. 목록 보기. 2/4. MariaDB 연동. ✓ npm으로 mysql 설치 후 연결 과정 var mysql = require(‘mysql’) var pool = mysql.
Source: velog.io
Date Published: 7/13/2022
View: 3478
[NodeJS]NodeJS와 Mysql(MariaDB)연동하기 (express.JS …
요즘 언어들이 모두 그렇듯이 nodejs도 연동하고 사용하는 일이 매우 간단하다. 이번에는 NodeJS와 MySQL(MariaDB)를 연동하도록 해보자.
Source: kamang-it.tistory.com
Date Published: 8/16/2021
View: 3018
서버사이드 와 데이터베이스 연결 (선택: NodeJS, Mariadb)
※ mariadb를 설치했어도 npm 연동 패키지는 mysql 패키지를 사용해야 한다. [라우팅 모듈 작성]. app/routes$ vi crud.js. const express = require(” …
Source: bloghelloworld.tistory.com
Date Published: 3/8/2022
View: 84
#2 Node.js RestAPI 만들기 – DB 연동(MariaDB)
Node.js – MariaDB 연동. 1) mysql 모듈 설치 – 다음과 같은 명령어를 터미널에서 실행시킨다. 1.
Source: dolmengs.tistory.com
Date Published: 10/21/2022
View: 4859
[MariaDB] 마리아DB Node.js – 노드.js MariaDB 연계 (MySQL)
차후 소스파일이 이동 됐을때 npm install 명령을 다시 하게 될텐데 그때 dependencies에 있는 항목들이 자동 설치됩니다. node.js에서 MariaDB 연결부터 …
Source: reddb.tistory.com
Date Published: 8/25/2022
View: 8356
Node.js : MariaDB 연동 – 파란크리스마스
Node.js : MariaDB 연동. 파란크리스마스 2019. 3. 2. 00:39. 반응형. 출처. Getting Started With the Node.js Connector – MariaDB Knowledge Base …
Source: bluexmas.tistory.com
Date Published: 1/25/2021
View: 3476
주제와 관련된 이미지 nodejs mariadb 연동
주제와 관련된 더 많은 사진을 참조하십시오 Nodejs mysql 연동시키기. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
주제에 대한 기사 평가 nodejs mariadb 연동
- Author: 코도
- Views: 조회수 1,745회
- Likes: 좋아요 38개
- Date Published: 2021. 10. 15.
- Video Url link: https://www.youtube.com/watch?v=KUp6yBotJd8
[Node.js] MariaDB와 연동하기
1. MariaDB 설치
2. 간이 table 생성
windows 메뉴에서 mariaDB 검색
차례대로 입력
DROP DATABASE IF EXISTS nodejs_test; CREATE DATABASE nodejs_test; DROP USER IF EXISTS nodejs_admin; CREATE USER nodejs_admin@’%’ IDENTIFIED BY ‘admin’; GRANT ALL PRIVILEGES ON nodejs_test.* to nodejs_admin@’%’; USE nodejs_test; DROP TABLE IF EXISTS users; CREATE TABLE users ( user_key INT NOT NULL AUTO_INCREMENT PRIMARY KEY, user_id VARCHAR(128) UNIQUE NOT NULL ); INSERT INTO users(user_id) VALUES(‘TEST01’);
다음을 입력하면 테이블 구조를 확인할 수 있다.
3. nodejs 프로젝트 생성
index.js 파일 생성
(cmd) npm init
프로젝트 관련 여러 사항을 입력해준다.
package name : (db_edu) mariadb-test
description : mariadb connection testing project.
author : 담당자
4. 해당 폴더에 들어가면 package.js 파일 이 자동으로 생성되어 있음
5. 커넥터 설치하기
6. Visual Studio Code에서 MariaDB 사용 코드 작성
consts.js
mariaDBConn.js
const mariadb = require(‘mariadb’); const vals = require(‘./consts.js’); const pool = mariadb.createPool({ host: vals.DBHost, port:vals.DBPort, user: vals.DBUser, password: vals.DBPass, connectionLimit: 5 }); async function GetUserList(){ let conn, rows; try{ conn = await pool.getConnection(); conn.query(‘USE nodejs_test’); rows = await conn.query(‘SELECT * FROM users’); } catch(err){ throw err; } finally{ if (conn) conn.end(); return rows[0]; } } module.exports = { getUserList: GetUserList }
index.js
const mdbConn = require(‘./mariaDBConn.js’) const express = require(‘express’); const app = express(); mdbConn.getUserList() .then((rows) => { console.log(rows); }) .catch((errMsg) => { console.log(errMsg); }); const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`listening on ${port}`); });
7. 실행 및 결과 확인
(cmd) 해당 폴더에서 node indes.js
Node.js | Express + MariaDB 연동하기 (DB연동, CRUD)
MariaDB | 윈도우 MariaDB 설치 및 접속하기
MariaDB란? 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)이다. MySQL과 동일한 소스 코드를 기반으로 하며, GPL v2 라이선스를 따른다. 오라클 소유의 현재 불확실한 MySQL의 라이선스 상태에 반
kitty-geno.tistory.com
node.js 웹사이트 개발 – database 연동(mariadb, mysql)
반응형
mariaDB 를 설치합니다.
설치 방법 참고
2020/10/08 – [dev/database \ sql] – mariaDB 설치 가이드 for windows
maridDB 관련한 자세한 문서 및 사용법은 사이트 참고 바랍니다.
1. maridb Connector 이용
mariaDB 를 이용하기 위한 npm 모듈을 설치해 줍니다.
>npm install maridb –save
설치한 npm 모듈을 require 한 후 연결정보를 설정합니다.
var mariadb = require(‘mariadb’); const pool = mariadb.createPool({ host: ‘127.0.0.1’, port: 3308, user: ‘root’, password: ‘xxxxx’, connectionLimit: 5, database:”test” });
설정 정보로 퀴리를 실행하여 select 하는 예제 입니다.
app.post(“/send”, async function(req,res){ var email = req.body.email; var conn = await pool.getConnection(); var rows = await conn.query(‘SELECT * FROM mail’); // 쿼리 실행 console.log(rows[0]); res.send(email); })
2. Mysql 커넥터 이용
mysql 커넥터를 사용을 위한 npm 모듈 설치 (mariadb 와 사용및 방법은 거의 비슷합니다.)
>npm install mysql –save
mysql 용 연결정보를 설정합니다.
var mysql = require(“mysql”); var connection = mysql.createConnection({ host: ‘127.0.0.1’, port: 3308, user: ‘root’, password: ‘xxxxx’, connectionLimit: 5, database:”test” }); connection.connect();
// mysql 커넥터를 이용한 select 예제
app.post(“/send_mysql”, async function(req,res){ var email = req.body.email; connection.query(‘SELECT * FROM mail’ , function(err, rows){ if(err) throw err; if(rows[0]){ console.log(rows[0]); } }); res.send(email); })
반응형
NodeJs – MariaDB 연동하기
NodeJs에서 마리아 DB를 사용해보자.
1. 마리아DB 설치
마리아DB 홈페이지에서 마리아DB를 설치합니다.
2. DB 및 테이블 생성
테스트 DB와 테이블을 생성한 후 샘플데이터를 Insert합니다.
1 2 3 4 5 6 7 8 9 10 11 12 DROP DATABASE IF EXISTS nodejs_test; CREATE DATABASE nodejs_test; DROP USER IF EXISTS nodejs_admin; CREATE USER nodejs_admin@ ‘%’ IDENTIFIED BY ‘admin’ ; GRANT ALL PRIVILEGES ON nodejs_test. * to nodejs_admin@ ‘%’ ; USE nodejs_test; DROP TABLE IF EXISTS users; CREATE TABLE users ( user_key INT NOT NULL AUTO_INCREMENT PRIMARY KEY , user_id VARCHAR ( 128 ) UNIQUE NOT NULL ); INSERT INTO users(user_id) VALUES ( ‘TEST01’ ); cs
3. Nodejs 프로젝트 생성
CMD 혹은 powershell을 실행 후 workspace로 이동합니다.
npm init을 실행합니다.
프로젝트 관련 여러 사항을 묻습니다. 적당히 입력하고 넘어갑시다.
해당 작업을 수행하면 package.json 파일이 입력된 값에 의해 자동으로 생성됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 { “name” : “mariadb-test” , “version” : “1.0.0” , “description” : “mariadb connection testing project.” , “main” : “index.js” , “scripts” : { “test” : “echo \”Error: no test specified\” && exit 1″ } , “author” : “smoh” , “license” : “ISC” } Colored by Color Scripter cs
4. 커넥터 설치하기
npm install –save mariadb 를 수행하여 마리아DB 커넥터를 설치합니다.
–save를 입력하면 설치한 모듈정보가 자동으로 입력됩니다.
5. NodeJs를 통해 MariaDB 사용하는 코드 작성
커넥터를 사용하는 소스를 작성합니다.
mariaDBConn.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 const mariadb = require( ‘mariadb’ ); const vals = require( ‘./consts.js’ ); const pool = mariadb.createPool({ host: vals.DBHost, port:vals.DBPort, user: vals.DBUser, password: vals.DBPass, connectionLimit: 5 }); async function GetUserList(){ let conn, rows; try { conn = await pool.getConnection(); conn.query( ‘USE nodejs_test’ ); rows = await conn.query( ‘SELECT * FROM users’ ); } catch (err){ throw err; } finally{ if (conn) conn.end(); return rows[ 0 ]; } } module.exports = { getUserList: GetUserList } Colored by Color Scripter cs
** 접속정보는 별도 모듈에 저장해뒀습니다. 실제 사용시 pool내의 정보를 변경해 주시기 바랍니다.
6. MariaDB 커넥터 모듈을 사용해 유저 리스트를 가져오는 코드 작성
DB에 있는 정보를 가져와 봅시다.
index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 const mdbConn = require( ‘./mariaDBConn.js’ ) const express = require( ‘express’ ); const app = express(); mdbConn.getUserList() .then((rows) = > { console .log(rows); }) . catch ((errMsg) = > { console .log(errMsg); }); const port = process.env.PORT | | 3000 ; app.listen(port, () = > { console .log(`listening on ${port}`); }); Colored by Color Scripter cs
** express 프레임워크를 사용했습니다. 실행전에 express 프레임워크를 설치해 주시기 바랍니다.
7. 실행 및 결과 확인.
실행 결과는 다음과 같습니다.
728×90
[NodeJS]NodeJS와 Mysql(MariaDB)연동하기 (express.JS 상에서 간단한 회원가입,로그인,회원탈퇴 구현)
728×90
NodeJS상에서 DB와 연동하는일은 너무 자주 있어서 자주있다고 말하기도 민망하다.
요즘 언어들이 모두 그렇듯이 nodejs도 연동하고 사용하는 일이 매우 간단하다.
이번에는 NodeJS와 MySQL(MariaDB)를 연동하도록 해보자.
MySQL이나 MariaDB나 연동하는 방식은 완전히 동일하므로 둘을 사용하는 사람은 크게 걱정할 필요가 없다고 생각이 된다.
예제는 express프레임워크위에서 실행하였다. none express라도 어느정도 참고할 수 있을 것이다.
먼저 실습을할 디렉터리 구조는 아래와 같다.
기본적으로 존재하는 users와 index를 제외하고 5개를 추가하였다.
각각의 예제의 역할은 아래와 같다.
또한 express에 라우팅해주었다.
show-all-data : select문을 사용하고 넘어오는 파라메터의 데이터를 확인하도록한다. login : select문과 where절을 사용하고 pre-statment를 사용하는 법을 보도록한다. join : insert문을 사용하도록 한다. password-change : select문과 update문을 사용하도록 한다. delete-account : select문과 delete문을 사용하도록한다.
제일 먼저 할일은 이제 npm을 이용하여서 mysql 커넥터를 설치하는 일이다.
npm instll mysql –save
설치가 끝나면 테스트를 할 db를 보도록하자.
테스트할 db는 필자의 경우 mydb라는 이름으로 만들었고 현재 두개의 데이터가 들어있다.
테이블의 이름은 test_user이다.
이중에서 id는 프라이머리키이다. 쿼리로 나타내면 아래와 같다.
create table test_user(
id varchar ( 30 ) primary key ,
pw varchar ( 30 )
);
이제 한 파트씩 만들어보고 테스트해보도록 하자.
show-all-data : selcet문 사용과 파라메터 확인
/*show-all-data.js*/
var express = require ( ‘express’ ) ;
var router = express . Router () ;
var mysql = require ( ‘mysql’ ) ;
router.get( ‘/’ , function (req , res , next) {
var connection = mysql. createConnection ({
host : ‘localhost’ ,
post : 3306 ,
user : ‘root’ ,
password : ” ,
database : ‘mydb’
}) ;
connection. connect () ;
connection. query ( ‘select * from test_user’ , function (err , rows , fields) {
connection. end () ;
if (!err) {
console. log (rows) ;
console. log (fields) ;
var result = ‘rows : ‘ + JSON. stringify (rows) + ‘
‘ +
‘fields : ‘ + JSON. stringify (fields) ;
res. send (result) ;
} else {
console. log ( ‘query error : ‘ + err) ;
res. send (err) ;
}
}) ;
}) ;
module. exports = router ;
위의 show-all-data는 모든 데이터를 바로 문자열로 출력해줄것이다.
잘라서 부분부분 확인하도록 하자.
var mysql = require ( ‘mysql’ ) ;
mysql모듈을 임포트시키므로 당연히 필요하다.
var connection = mysql. createConnection ({
host : ‘localhost’ ,
post : 3000 ,
user : ‘root’ ,
password : ” ,
database : ‘mydb’
}) ;
이 부분으로 DB와 커넥션을 시켜준다. 아직 커넥션이 완료된건 아니고 커넥션을 해주는 부품을 만드는 것이다.
connection. connect () ;
여기서 위에 만든 커넥션에서 connect를 호출해주면 db가 연결된다.
connection. query ( ‘select * from test_user’ , function (err , rows , fields) {
if (!err) {
console. log (rows) ;
console. log (fields) ;
var result = ‘rows : ‘ + JSON. stringify (rows) + ‘
‘ +
‘fields : ‘ + JSON. stringify (fields) ;
res. send (result) ;
} else {
console. log ( ‘query error : ‘ + err) ;
res. send (err) ;
}
}) ;
이부분에서 query를 실행한다. 쿼리를 실행하면 콜백함수에서 총 3개의 파라메터가 반환되는데 각각의 의미는 아래와 같다.
err – 에러가 판단했는지 여부이다. 에러가 일어났다면 어떤 에러인지도 알 수 있다. rows – 쿼리의 실행결과 가지고 온 데이터이다. fields – 쿼리의 실행결과 가지고 온 데이터들의 필드정보이다.
백문이 불여일견이라고 실행해보도록하자.
콘솔로 출력해본 값은 위와 같은 데이터를 받은 것을 확인할 수 있다.
또한 화면에 출력된 값으로 각각의 rows값과 각각의 fields값들이 넘어 온것을 확인할 수 있다.
connection.end();
마지막으로 커넥션의 연결을 끊어준다.
사실 커넥션은 칼같이 끊어야되는 경우가 아니라면(웹을사용한다면 칼같이 끊는일은 거의 없다.)
호출할 필요가 없다.
위의 코드는 전반적으로 DB를 호출해서 사용하는 방법에 대해서 논하고 있긴 하지만 문제점이 있다.
바로 호출할때마다 커넥션을 새로 만든다는 것이다.
이는 리소스도 리소스지만 에러를 야기할확률도 매우 높아진다.
물론 리소스 문제도 굉장히 심각하다.
따라서 전역으로 열어두는것이 낫다.
어짜피 연결을 한번하고 계속해서 호출하는게 낫기 때문이다.
그 방법을 한번 해보도록하자.
mysql-db라는 연결용 js파일을 만들었다.
var mysql = require ( ‘mysql’ ) ;
var connection = mysql. createConnection ({
host : ‘localhost’ ,
post : 3000 ,
user : ‘root’ ,
password : ” ,
database : ‘mydb’
}) ;
module. exports = connection ;
이렇게 위와같이 모듈을 작성한다.
/*app.js*/
var mysqlDB = require(‘./mysql-db’);
mysqlDB.connect();
/*source*/
app.js에서 만든 모듈을 호출해서 connect시킨다.
/*show-all-data.js*/
var express = require(‘express’);
var router = express.Router();
var mysqlDB = require(‘../mysql-db’);
router.get(‘/’, function (req, res, next) {
mysqlDB.query(‘select * from test_user’, function (err, rows, fields) {
if (!err) {
console.log(rows);
console.log(fields);
var result = ‘rows : ‘ + JSON.stringify(rows) + ‘
‘ +
‘fields : ‘ + JSON.stringify(fields);
res.send(result);
} else {
console.log(‘query error : ‘ + err);
res.send(err);
}
});
});
module.exports = router;
이제 mysql대신 우리가 만든 mysqlDB를 호출해준다.
만약 도중에 connect와 end를 동적이게 하고 싶다면 app.js에서 connect하지말고 각각의 router에서 해주면 된다.
login : select문과 where절을 사용
Login login
일단 위와같이 렌더링 페이지를 만든다.
login 페이지를 get으로 들어갈 수도 있고 결과는 같은 페이지의 post로 보여주는 로직을 짜도록하자.
var express = require(‘express’);
var router = express.Router();
var mysql_db = require(‘../mysql-db’);
router.get(‘/’, function (req, res, next) {
res.render(‘login’);
});
router.post(‘/’, function (req, res, next) {
var userId = req.body[‘userId’];
var userPw = req.body[‘userPw’];
mysql_db.query(‘select * from test_user where id=\” + userId + ‘\’ and pw=\” + userPw + ‘\”, function (err, rows, fields) {
if (!err) {
if (rows[0]!=undefined) {
res.send(‘id : ‘ + rows[0][‘id’] + ‘
‘ +‘pw : ‘ + rows[0][‘pw’]);
} else {
res.send(‘no data’);
}
} else {
res.send(‘error : ‘ + err);
}
});
});
module.exports = router;
커넥터는 이제 우리가만든 것을 사용할 것이다.
select구문에 where을 쓴 예시이다. 쿼리부분만 보도록 하자.
var userId = req. body [ ‘userId’ ] ;
var userPw = req. body [ ‘userPw’ ] ;
mysql_db. query ( ‘select * from test_user where id= \’ ‘ + userId + ‘ \’ and pw= \’ ‘ + userPw + ‘ \’ ‘ , function (err , rows , fields) {
if (!err) {
if (rows[ 0 ]!= undefined ) {
res. send ( ‘id : ‘ + rows[ 0 ][ ‘id’ ] + ‘
‘ +‘pw : ‘ + rows[ 0 ][ ‘pw’ ]) ;
} else {
res. send ( ‘no data’ ) ;
}
} else {
res. send ( ‘error : ‘ + err) ;
}
}) ;
파라메터를 req.body로 받아서 그 값을 직접 적어넣었다.
위의 결과가 제대로 작동하는지 확인해보도록하자.
만약 디비 커넥션이 제대로 되지 않는 다면 에러가 날것이다.
그다음 id와 비밀번호를 모두 확인해서 일치하는 값이 있다면 rows[0]가 존재(defined)할것이고 없다면 undefined할것이다.
위의 코드는 defined인지 undefined인지 확인후 존재한다면 id와 패스워드를 보여주게된다.
위는 로그인에 성공했을 때의 예시이다.
여기는 로그인에 실패했을 때의 예시이다.
위의 코드는 치명적인 문제점이 있다. 바로 파라메터를 직접넣기 때문에 sql인젝션이 될 위험성이 있다.
따라서 pre-statement로 처리하는것이 좋다.
아래는 pre-statemnet로 sql인젝션을 막게 만드는 코드이다.
mysql_db. query ( ‘select * from test_user where id=? and pw=?’ , [userId , userPw] , function (err , rows , fields)
쿼리가 들어갈 부분을 ?로 대체해주고 두번째 파라메터로 콜백함수가 아닌 값을 리스트로 넣어주면된다.
코드를 작성하기도 훨씬 간편하며 sql인젝션을 방어할 수 있다.
join : insert문 사용
insert문으로 join을 구현해보도록하자.
Join join
위와 같이 join페이지를 구현한다.
/*join.js*/
var express = require ( ‘express’ ) ;
var router = express . Router () ;
var mysqlDB = require ( ‘../mysql-db’ ) ;
router.get( ‘/’ , function (req , res , next) {
res. render ( ‘join’ ) ;
}) ;
router.post( ‘/’ , function (req , res , next) {
var userId = req. body [ ‘userId’ ] ;
var userPw = req. body [ ‘userPw’ ] ;
var userPwRe = req. body [ ‘userPwRe’ ] ;
if (userPw == userPwRe) {
mysqlDB. query ( ‘insert into test_user values(?,?)’ , [userId , userPw] , function (err , rows , fields) {
if (!err) {
res. send ( ‘success’ ) ;
} else {
res. send ( ‘err : ‘ + err) ;
}
}) ;
} else {
res. send ( ‘password not match!’ ) ;
}
}) ;
module. exports = router ;
위의 코드는 insert문을 사용한 예시이다.
if캐이스로 먼저 패스워드가 일치하는지를 확인한다.
일치하지 않을 경우 패스워드가 일치하지 않는 다고 알린다.
다음 if캐이스로는 해당 쿼리가 유효한 구문인지, 그리고 유효하게 작동하는지를 검사한다.
그럼 한번 만들어보도록 하자.
기존에 없던 새로운 아이디를 만들어보자.
비밀번호가 일치하며 기존에 존재하지 않는 아이디라면 성공하게된다.
실제 디비에서도 데이터가 적재된것을 확인할 수 있다.
이번에는 이미 존재하는 아이디로 다시만들려고 시도해보자.
그러면 아이디가 중복될 수 없다면서 에러가 뜬다.
password-change : select문과 update문 사용
Password Change Password Change
위와같이 코드를 작성한다.
이제 테스트를 하자.
//password-change.js
var express = require ( ‘express’ ) ;
var router = express . Router () ;
var mysql_db = require ( ‘../mysql-db’ ) ;
router.get( ‘/’ , function (req , res , next) {
res. render ( ‘password-change’ ) ;
}) ;
router.post( ‘/’ , function (req , res , next) {
var userId = req. body [ ‘userId’ ] ;
var userPw = req. body [ ‘userPw’ ] ;
var userPwNew = req. body [ ‘userPwNew’ ] ;
mysql_db. query ( ‘select * from test_user where id=? and pw=?’ , [userId , userPw] , function (err , rows , fields) {
if (!err) {
if (rows[ 0 ] != undefined ) {
mysql_db. query ( ‘update test_user set pw=? where id=?’ , [userPwNew , userId] , function (err , rows , fields) {
if (!err) {
res. send ( ‘password change success’ ) ;
} else {
res. send ( ‘error : ‘ + err) ;
}
}) ;
} else {
res. send ( ‘no data’ ) ;
}
} else {
res. send ( ‘error : ‘ + err) ;
}
}) ;
}) ;
module. exports = router ;
코드가 좀 긴데 그 이유는 쿼리를 두번 쓰기 때문이다.
먼저 지금의 아이디와 패스워드가 맞는지를 확인하고 맞다면 패스워드를 변경해야하기 때문이다.
query의 콜백 안에 query를 쓰는 이유는 nodejs가 비동기식으로 데이터를 처리하기 때문이다.
저렇게 콜백을 쓰는게 귀찮다면 동기화시켜주는 모듈을 사용하면된다.
여기서 그걸 다루진 않겠다. 만약 동기화가 절실하다면 이 포스팅을 참조하라.
이제 제대로 작동하는지 테스트를 해보자.
아이디와 패스워드, 그리고 변경할 패스워드를 입력한다.
위와같이 패스워드가 변경된걸 확인할 수 있다.
delete-account : select문과 delete문을 사용
Delete Account Delete Account
위와 같이 코드를 작성한다.
//delete-account.js
var express = require ( ‘express’ ) ;
var router = express . Router () ;
var mysql_db = require ( ‘../mysql-db’ ) ;
router.get( ‘/’ , function (req , res , next) {
res. render ( ‘delete-account’ ) ;
}) ;
router.post( ‘/’ , function (req , res , next) {
var userId = req. body [ ‘userId’ ] ;
var userPw = req. body [ ‘userPw’ ] ;
mysql_db. query ( ‘select * from test_user where id=? and pw=?’ , [userId , userPw] , function (err , rows , fields) {
if (!err) {
if (rows[ 0 ] != undefined ) {
mysql_db. query ( ‘delete from test_user where id=?’ , [userId] , function (err , rows , fields) {
if (!err) {
res. send ( ‘delete success’ ) ;
} else {
res. send ( ‘error : ‘ + err) ;
}
}) ;
} else {
res. send ( ‘no data’ ) ;
}
} else {
res. send ( ‘error : ‘ + err) ;
}
}) ;
}) ;
module. exports = router ;
위에서 다 설명 했기에 따로 설명할 코드는 없다. 실행해보자.
필자는 목록에 있는 ekekdid를 삭제했다.
제대로 됬는지 보자.
DB에서도 삭제된걸 확인할 수 있다.
서버사이드 와 데이터베이스 연결 (선택: NodeJS, Mariadb)
[서버 작성]~/app$ vi main.js
//외부 모듈 추출 const express = require(“express”); //서버 생성 const app = express(); //라우팅 모듈 추출 const crud = require(“./routes/crud.js”); //라우팅 설정 app.use(“/crud”, crud.router); //서버 실행 app.listen(3000, function () { console.log(“3000번 포트에 서버가 실행됐습니다!”); });
[데이터베이스 접속 정보 모듈화]~/app$ mkdir modules
~/app/modules$ vi dbconfig.js
const fnDb = function() { return { host : “localhost”, user: “아이디”, password: “비밀번호”, database: “데이터베이스명” } } exports.db = fnDb;
※ 요소 이름에도 큰따옴표를 붙여야 한다.
[mariadb 모듈 설치]app$ npm install mysql
※ mariadb를 설치했어도 npm 연동 패키지는 mysql 패키지를 사용해야 한다.
[라우팅 모듈 작성]app/routes$ vi crud.js
const express = require(“express”); const router = express.Router(); const mysql = require(“mysql”); const dbconfig = require(“../modules/dbconfig.js”); //반환 결과가 없는 경우 router.get(“/delete”, function(req, res) { let sql = “DELETE FROM 테이블명 WHERE 컬럼명1=? AND 컬럼명2=?”; const connection = mysql.createConnection(dbconfig.db()); connection.connect(); connection.query(sql, [파라미터1, 파라미터2], function(err){ if(!err){ console.log(“done!”); } else { console.log(err); } }); connection.end(); }); //반환 결과가 있는 경우 router.get(“/select”, function(req, res) { let sql = “SELECT * FROM 테이블명 WHERE 컬럼명1=? AND 컬럼명2=?”; const connection = mysql.createConnection(dbconfig.db()); connection.connect(); connection.query(sql, [파라미터1, 파라미터2], function(err, result){ if(!err){ if(result[0]) { console.log(result); } else { console.log(“result none”); } } else { console.log(err); } }); connection.end(); }); exports.router = router;
심화편
[다중쿼리]1. DB 접속 정보 수정
const dbConfig = { host : ‘[호스트 이름]’, port : 3306, user : ‘[유저명]’, password : ‘[비밀번호]’, database : ‘[스키마 명]’, multipleStatements: true // 여러 쿼리를 ‘;’를 기준으로 한번에 보낼 수 있게한다. }
2. NodeJS 연동
var sql1 = ‘SELECT CLUB_NM FROM CLUB; ‘; // 클럽목록 var sql2 = ‘SELECT MBER_NM FROM CLUB_MBER; ‘; // 클럽회원 dbconn.query(sql1 + sql2, function(err, results, field){ var sql1_result = results[0]; //sql1 의 결과값 var sql2_result = results[1]; //sql2 의 결과값 … });
#2 Node.js RestAPI 만들기 – DB 연동(MariaDB)
반응형
이전글 – Node.js 프로젝트 생성
RESTAPI는 데이터를 제공해주는것을 목표로 한다.
일단 CRUD(Create, Read, Update, Delete)를 목표로 RESTAPI를 제작하는 것이기 때문에 데이터베이스랑 연동은 필수라고 봐도 된다.
Node.js – MariaDB 연동
1) mysql 모듈 설치 – 다음과 같은 명령어를 터미널에서 실행시킨다.
1 npm install mariadb – – save cs
VSCode 터미널창(단축키 : ctrl + shift + ` )
cmd창에서 진행해도 상관없다 하지만, 경로는 이전에 생성한 node 프로젝트에서 진행해야 한다.
2) MariaDB 설정 파일 생성(maria.js) (경로 : /project/database/connect/maria.js)
선수작업으로 MariaDB에서 Database를 생성한 후 진행해야 한다.
1 2 3 4 5 6 7 8 9 10 11 const maria = require( ‘mysql’ ); const conn = maria.createConnection({ host: ‘localhost’ , port: 3306 , user: ‘유저명’ , password: ‘비밀번호’ , database: ‘데이터베이스명’ }); module.exports = conn; cs
3. 마리아 DB 설정 추가 app.js (경로 : /project/app.js)
반응형
[MariaDB] 마리아DB Node.js – 노드.js MariaDB 연계 (MySQL)
반응형
[MariaDB] 마리아DB Node.js – 노드.js MariaDB 연계 (MySQL)Node.js에서 마리아DB에 연결을 하기 위해서는 npm을 통해 mysql을 설치해야 합니다.
npm install –save mysql
–save 옵션을 주게 되면 pakage.json 파일에 dependencies에 자동 등록이 됩니다.
pakage.json 파일의 dependencies에 등록이 되면 좋은 점이 있습니다.
차후 소스파일이 이동 됐을때 npm install 명령을 다시 하게 될텐데 그때 dependencies에 있는 항목들이 자동 설치됩니다.
node.js에서 MariaDB 연결부터 종료까지의 단계는 아래와 같습니다.
MariaDB 연결 모듈 할당: 모듈할당용변수 = require(‘mysql); 커넥션객체 할당: 커넥션변수 = 모듈할당용변수 .createConnection({host:’IP’, user:’계정명’, password:’비번’, database:’DB명’}) 마리아DB 연결 : 커넥션변수 .connect(); SQL문 실행: 커넥션변수 .query(‘SQL문장’, 콜백함수(에러받는변수, 접속결과받는변수, fields){ 콜백함수 실행내용 }); MariaDB 연결종료: 커넥션변수 .close()
opentutorials DB명에 붙어서 topic 테이블을 조회하는 소스
var mysql = require(‘mysql’); // mysql 변수에 mysql 모듈을 할당 var connection = mysql. createConnection({ //커넥션변수에 mysql변수에 있는 크리에이드커넥션 메소드를 호출(객체를 받음) 할당 host : ‘localhost’, //host객체 – 마리아DB가 존재하는 서버의 주소 user : ‘root’, //user객체 – 마리아DB의 계정 password : ‘password’, //password객체 – 마리아DB 계정의 비밀번호 database : ‘opentutorials’ //database객체 – 접속 후 사용할 DB명 }); connection.connect(); // (위에 선언한 객체들을 가진)커넥션변수의 connect() 메소드를 호출하면 DB에 접속이 됨 connection.query(‘SELECT * FROM topic’, function(error, results, fields){ // 커넥션.query 메소드를 호출해서(첫번째인자는 SQL문을주고, 두번째 인자로 콜백함수를 줌). // 첫번째 인자 쿼리가 실행되고 나서 두번째 콜백함수가 실행됨(에러가발생했으면error에 할당, 접속결과는 results에 할당) if (error) { console.log(error); } //에러에 값이 있다면 에러값을 콘솔에 출력 console.log(results); }); connection.end();
위 소스로 만든 mysql.js파일을 node로 실행시켜보면 topic 테이블의 내용이 객체 형태로 반환됩니다.
node.js를 이용한 마리아DB 테이블 내용 셀렉트 출력
DB접속정보를 db.js파일로 만들고 main.js 파일에서 모듈로 불러 들여서 쿼리로 사용 할 수도 있습니다.
먼저 db.js파일을 만듭니다.
var mysql = require(‘mysql’); // mysql 변수에 mysql 모듈을 할당 var db = mysql. createConnection({ //db변수에 mysql변수에 있는 크리에이드커넥션 메소드를 호출(객체를 받음) 할당 host : ‘localhost’, //host객체 – 마리아DB가 존재하는 서버의 주소 user : ‘root’, //user객체 – 마리아DB의 계정 password : ‘password’, //password객체 – 마리아DB 계정의 비밀번호 database : ‘opentutorials’ //database객체 – 접속 후 사용할 DB명 }); // db.connet(); module.exports = db;
다음은 main.js에서 require(‘./db.js’)로 접속정보를 가져와 변수에 집어 넣습니다.
이후 변수명.query(‘쿼리내용’, function(에러시값받는변수, 성공시값받는변수)로 쿼리내용을 객체로 변수에 받습니다.
var db = require(‘./db.js’); // 현재폴더에 있는 db.js 파일 모듈로 가져오기(DB접속 정보가 있음) var http = require(‘http’); // 모듈 사용하기 – 변수 = require(‘사용할모듈명’) var app = http.createServer(function(request,response){ db.query(`SELECT * FROM topic`, function(error, result){ // 커넥션.query 메소드를 호출해서(첫번째인자는 SQL문을주고, 두번째 인자로 콜백함수를 줌). // 첫번째 인자 쿼리가 실행되고 나서 두번째 콜백함수가 실행됨(에러가발생했으면 임의변수 error에 에러값 할당, 접속결과 성공시 결과값 임의변수 topics에 할당) console.log(result) var html = // 변수 html에 아래 html 코드를 입력 `
nodejs – mysql nodejs – mysql ` response.writeHead(200); // 응답: 상태 성공(200) response.end(html); // 웹에 띄워줄 내용 (html변수) }); }) app.listen(8088); // http.createServer()가 할당된 변수 app를 8088로 오픈nodejs로 main.js를 실행시키면 웹서비스가 실행됩니다. ($ node main.js)
브라우저로 서버의 8088포트로 접속해 봅니다.
이제 위에 html변수 안에 들어가는 html코드 내용에 result 변수로 받은 sql객채들을 꺼내서 표현해 봅니다.
var db = require(‘./lib/db.js’); // 현재폴더에 있는 db.js 파일 모듈로 가져오기(DB접속 정보가 있음) var http = require(‘http’); // 모듈 사용하기 – 변수 = require(‘사용할모듈명’) var app = http.createServer(function(request,response){ db.query(`SELECT * FROM topic`, function(error, result){ // 커넥션.query 메소드를 호출해서(첫번째인자는 SQL문을주고, 두번째 인자로 콜백함수를 줌). // 첫번째 인자 쿼리가 실행되고 나서 두번째 콜백함수가 실행됨(에러가발생했으면 임의변수 error에 에러값 할당, 접속결과 성공시 결과값 임의변수 topics에 할당) console.log(result) var html = // 변수 html에 아래 html 코드를 입력 `
nodejs – mysql ${result[0].id} / ${result[0].title} / ${result[0].description}
${result[1].id} / ${result[1].title} / ${result[1].description}
${result[2].id} / ${result[2].title} / ${result[2].description}
` response.writeHead(200); // 응답: 상태 성공(200) response.end(html); // 웹에 띄워줄 내용 (html변수) }); }) app.listen(8088); // http.createServer()가 할당된 변수 app를 8082로 오픈
컨트롤 + C로 노드를 종료하고, nodejs로 main.js를 재실행시킵니다. ($ node main.js)
브라우저로 서버의 8088포트로 접속해 봅니다.
쿼리로 조회된 값을 객체로 받은 result 변수의 값들이 출력됩니다.
위와 같은 방식으로 쿼리내용에 업데이트, 인서트, 딜리트 sql문을 넣을 수도 있습니다.
db.query(‘쿼리내용’, function(에러값, 결과값){ 실행내용 });
// 업데이트 예시 var name = ‘이름’ var profile = ‘프로필’ var id = ‘1234’; db.query(` UPDATE topic SET name=?, profile=? WHERE id=?`, // DB topic 테이블에 UPDATE하기. ?로 선한한 부분은 (,)뒤에 []로 표현된 값이 입력됨 [name, profile, id], // 윗줄 ?인 name에 ‘이름’ 넣고, profile에 ‘프로필’ 넣고, id에 ‘1234’ 넣기 function(error, result){ // 쿼리문 실행 후 변수에 값을 받음. 에러시 error변수에, 성공시 result변수에 값을 받고 {} 안에 내용 실행 if(error){ // error 변수에 값이 존재할 경우 throw error; //빠저나가기 } response.writeHead(302, {Location: `/`}); // 응답: 리다이렉션(302). 주소는 / response.end(); }
// 인서트 예시 var name = ‘이름’ var profile = ‘프로필’ db.query(` INSERT INTO topic (name, profile) VALUES(?, ?)`, // DB topic 테이블에 인서트 인투(name, profile) [name, profile], // name에 ‘이름’ 넣고, profile에 ‘프로필’넣기 function(error, result){ // 쿼리문 실행 후 변수에 값을 받음. 에러시 error변수에, 성공시 result변수에 값을 받고 {} 안에 내용 실행 if(error){ throw error; } response.writeHead(302, {Location: `/`}); // 응답: 리다이렉션(302). 주소는 / response.end(); } )
// 딜리트 예시 var id = ‘1234’ db.query(` DELETE FROM topic WHERE id=?`, // DB topic 테이블에서 id가 아래줄에 선언한 id와 같은 값 지우기 [id], // id에 ‘1234’ 넣기 function(error, result){ // 쿼리문 실행 후 변수에 값을 받음. 에러시 error변수에, 성공시 result변수에 값을 받고 {} 안에 내용 실행 if(error){ throw error; } response.writeHead(302, {Location: `/`}); // 응답: 리다이렉션(302). 주소는 / response.end(); } )
[MariaDB] 전체보기반응형
Node.js : MariaDB 연동
728×90
출처
/config/db_config.js
module.exports = (function() { return { host: “localhost”, port : 10312, user: “root”, password: “sqldba”, database: “simplesns” } })();
/config/dbHelper.js
const mariadb = require(‘mariadb’); var config = require(‘./db_config’); // ./는 현재 디렉토리를 나타냅니다 const pool = mariadb.createPool({ host: config.host, port: config.port, user: config.user, password: config.password, database: config.database, connectionLimit: 5 }); function dbHelper() { // this.getConnection = function(callback) { pool.getConnection() .then(conn => { callback(conn); }).catch(err => { //not connected }); }; // this.getConnectionAsync = async function() { try { let conn = await pool.getConnection(); // console.log(“conn = ” + conn); // { affectedRows: 1, insertId: 1, warningStatus: 0 } return conn; } catch (err) { throw err; } return null; }; // this.sendJSON = function(response, httpCode, body) { var result = JSON.stringify(body); response.send(httpCode, result); }; } module.exports = new dbHelper();
/api/user/UserService.js
var dbHelper = require(‘../../config/dbHelper’); // https://github.com/jareddlc/node-datatables/blob/master/server.js function UserService() { this.getUserList = function(request, response) { dbHelper.getConnection(function(conn) { conn.query(‘SELECT * FROM member’) .then((results) => { // console.log(results); //[ {val: 1}, meta: … ] //Output var output = {}; var temp = []; output.datas = results; dbHelper.sendJSON(response, 200, output); }) .then((res) => { console.log(‘res = ‘+res); // { affectedRows: 1, insertId: 1, warningStatus: 0 } conn.end(); }) .catch(err => { //handle error console.log(err); conn.end(); }) }); } } module.exports = new UserService();
키워드에 대한 정보 nodejs mariadb 연동
다음은 Bing에서 nodejs mariadb 연동 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 Nodejs mysql 연동시키기
- 동영상
- 공유
- 카메라폰
- 동영상폰
- 무료
- 올리기
Nodejs #mysql #연동시키기
YouTube에서 nodejs mariadb 연동 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 Nodejs mysql 연동시키기 | nodejs mariadb 연동, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.