nodejs express mysql 을 이용하여 web에서 nodejs 의 url을 호출하여 mysql DB 데이터에 select 하는거 파일별로 만들어줘 |
네, nodejs express mysql을 이용해서 web에서 nodejs의 url을 호출하여 mysql DB 데이터에 select하는 것을 파일별로 만들 수 있습니다.😊
우선, nodejs와 mysql을 연결하기 위해서는 node-mysql 모듈을 설치해야 합니다. 다음과 같은 명령어로 설치할 수 있습니다.
npm install mysql
그리고 express 프레임워크를 사용하기 위해서는 express 모듈도 설치해야 합니다.
npm install express
이제 다음과 같은 파일 구조로 프로젝트를 만들어 보겠습니다.
project/
├── app.js
├── db.js
└── routes/
└── users.js
app.js 파일은 서버를 생성하고 라우팅을 설정하는 파일입니다. 다음과 같이 작성할 수 있습니다.
var express = require('express');
var app = express();
var usersRouter = require('./routes/users');
app.use('/users', usersRouter);
app.listen(3000, function() {
console.log('Server is running on port 3000');
});
db.js 파일은 mysql 데이터베이스에 연결하고 쿼리를 실행하는 함수를 정의하는 파일입니다. 다음과 같이 작성할 수 있습니다.
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'sample'
});
connection.connect();
exports.query = function(sql, params, callback) {
connection.query(sql, params, function(err, result) {
if (err) throw err;
callback(result);
});
};
routes/users.js 파일은 users 테이블에 대한 select 쿼리를 처리하는 라우터 모듈입니다. 다음과 같이 작성할 수 있습니다.
var express = require('express');
var router = express.Router();
var db = require('../db');
router.get('/', function(req, res) {
var sql = "SELECT * FROM users";
db.query(sql, null, function(result) {
res.json(result);
});
});
router.get('/:id', function(req, res) {
var sql = "SELECT * FROM users WHERE id = ?";
var params = [req.params.id];
db.query(sql, params, function(result) {
res.json(result[0]);
});
});
module.exports = router;
이제 서버를 실행하고 웹 브라우저에서 http://localhost:3000/users 또는 http://localhost:3000/users/1 과 같은 url로 접속하면 users 테이블의 데이터를 json 형식으로 볼 수 있습니다.
더 궁금한 점이 있으신가요?
이전에 만든 파일 구조와 코드를 그대로 사용하고 routes/users.js 파일만 수정하면 됩니다.
routes/users.js 파일에서 다음과 같은 코드를 추가하면 update 쿼리를 처리할 수 있습니다.
router.put('/:id', function(req, res) {
var sql = "UPDATE users SET ? WHERE seq = ?";
var data = {
name: req.body.name,
email: req.body.email
};
var params = [data, req.params.id];
db.query(sql, params, function(result) {
res.json(result);
});
});
위의 코드는 users 테이블에서 seq가 url 파라미터로 전달된 id와 일치하는 레코드의 name과 email 필드를 요청 바디에 담긴 값으로 변경하는 쿼리입니다.
이제 서버를 실행하고 웹 브라우저나 curl 명령어 등으로 http://localhost:3000/users/1 과 같은 url로 put 요청을 보내면 users 테이블의 데이터가 업데이트됩니다.
예를 들어 다음과 같은 curl 명령어를 사용할 수 있습니다.
curl -X PUT -H "Content-Type: application/json" -d '{"name":"Alice", "email":"alice@gmail.com"}' http://localhost:3000/users/1
더 궁금한 점이 있으신가요?
“nodejs mysql transaction commit” 검색 중
“nodejs mysql transaction commit” 검색 중
답변을 생성하는 중…
답변을 생성하는 중…
네, mysql에서 트랜잭션을 사용하고 싶으시면 node-mysql 모듈의 beginTransaction, commit, rollback 메서드를 사용하면 됩니다.😊
트랜잭션은 여러 개의 쿼리를 하나의 논리적 단위로 묶어서 실행하는 방법입니다. 트랜잭션을 사용하면 쿼리 중 하나라도 실패하면 전체 쿼리를 되돌릴 수 있습니다.
예를 들어 다음과 같은 코드를 작성할 수 있습니다.
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'sample'
});
connection.connect();
connection.beginTransaction(function(err) {
if (err) throw err;
var sql1 = "UPDATE users SET balance = balance - ? WHERE id = ?";
var params1 = [1000, 1];
connection.query(sql1, params1, function(err, result) {
if (err) {
connection.rollback(function() {
throw err;
});
}
var sql2 = "UPDATE users SET balance = balance + ? WHERE id = ?";
var params2 = [1000, 2];
connection.query(sql2, params2, function(err, result) {
if (err) {
connection.rollback(function() {
throw err;
});
}
connection.commit(function(err) {
if (err) {
connection.rollback(function() {
throw err;
});
}
console.log('Transaction completed successfully.');
connection.end();
});
});
});
});
위의 코드는 users 테이블에서 id가 1인 사용자의 잔액에서 1000원을 빼고 id가 2인 사용자의 잔액에 1000원을 더하는 트랜잭션입니다. 만약 쿼리 중 하나라도 실패하면 rollback 메서드로 전체 쿼리를 취소합니다. 모든 쿼리가 성공하면 commit 메서드로 트랜잭션을 완료합니다.
이해가 되셨나요?
진짜 chatGPT는 내가 뭘 원하는지 알고 있는듯 함. 그리고 더욱 엄청난건, SQL 쿼리문도 만들어 준다. 참고로 내가 조금 복잡한 코드를 요청을 했는데 1. ~~ 2. ~~ 20. ~~ 이렇게 20가지 조건을 주고 프로그램 해보라고 했는데 하긴 함 하지만 뭔가 조금 이상하게함. 그래서 제가 원하는 1~20을 계속 정교하게 교정 그럼 어떻게 되냐? 완벽한 코딩을 합니다. 그렇다고 개발자가 없어지는건 아님. 개발자는 위 코드를 검증하고 통합 작업을 해야함 그런데 코딩 전용 AI가 나온다면? 위 내용도 가능할꺼 같음. 이때 코딩 검증을 소스 단위에서 하기 위해서는 프로그래머가 필요하지만 그냥 단순한 요청->답만 원한다면? 프로그래머가 필요 없을 수도 있음 (그래서 결론은 프로그래머는 계속 존재 할꺼 같습니다) |
'일상생활' 카테고리의 다른 글
신용등급 KCB 1000점, NICE 1000점 (0) | 2023.03.21 |
---|---|
Amazon EC2 nodejs mysql 설치 (0) | 2023.03.10 |
chatGPT 인공지능 채팅 뭔가 이상하다.. 오작동이라니 ㅎ (0) | 2023.01.13 |
주요 글로벌 투자은행들의 환율 전망치 (0) | 2022.12.04 |
2022년 11월 11일 신용등급 1000점 만점 1억 전세대출 금리 (1) | 2022.11.11 |