본문 바로가기

IoT Server 설계/Node.js

node.js + db 연동 (POSTman 확인) (2)

지난 시간에는 node.js를 활용해서 데이터베이스를 생성해봤다. 지난 시간 생성된 데이터베이스는 ns_sensor라는 데이터베이스를 생성하고 user라는 테이블을 생성해서 그안에 id, name이라는 컬럼을 생성했다. 물론 지난시간에도 말했지만 이렇게 node.js 코딩을 통해서 생성말고 HeidiSQL 프로그램을 활용해 직관적으로 클릭 몇번만으로도 생성이 가능하다. 이번 포스팅에서는 지난 시간 생성한 데이터베이스에 POST를 해서 실제 데이터를 저장해보도록 하겠다. 만약 데이터베이스가 생성이 안되어 있다면 지난 포스팅을 참고 혹은 직접 Heidisql로 생성을 해두고 실습하면 될거 같다.

 

 

지난번 만든 데이터베이스를 활용해야 하기 때문에 지난 포스팅에서 만들어둔 데이터베이스의 구조는 아래와 같다. 서버에서 직접 myslq -u root -p / show databases;  식으로 확인도 가능하지만 HeidiSQL 프로그램으로 확인했다. 그냥 내가 만든 계정으로 접속하면된다. 만약 외부접속이 불가능하거나 DB 접근이 불가능하다면!!! https://neosla.tistory.com/16?category=805051 를 참고하자... 방법 잘 써놨다 (내가 훗)

 

HeidiSQL 접속을 하면 지난번에 생성한 ns_sensor 데이터베이스와 user 테이블이 보인다. 물론 아직 데이터 입력을 하지 않았기 때문에 데이터 탭으로 들어가면 아무것도 입력이 되어있지 않다. 아래 보면 id와 name이 비어있다. 여기에 데이터를 채워볼것이다.

 

 

우리는 이 데이터 탭에 데이터를 post 방식으로 넣을 예정이다. 이제 실습을 해보도록 하겠다!!! 일단 코드부터..

 

# vim sensor_post.js

 

//////////////////////////////////////////////////////////////////

var express = require('express');

var app = express();

var bodyParser = require('body-parser');

// Create application/x-www-form-urlencoded parser

var urlencodedParser = bodyParser.urlencoded({ extended: false })

var mysql = require('mysql');

var connection = mysql.createConnection({

host : "localhost",

port : 3306,

user : "root",

password: "내 데이터베이스 접근할때 비밀번호 입력",

database : "ns_sensor"  // 생성한 데이터베이스

})

connection.connect()

app.use(express.static('public'));

//app.use(express.bodyParser());

app.get('/user', function (req, res) {

res.sendFile( __dirname + "/" + "index.html" );

})

app.post('/userp', urlencodedParser, function(req,res){

var id = req.body.id

var name = req.body.name

console.log("%s",id + name)

if(id && name){

connection.query("INSERT INTO user (id, name) VALUES ('" + id + "', '" + name + "')",function(error,result,fields){

if(error){

res.send('err1:'+error)

}

else{

res.send('success')

}

//connection.end();

})

}

})

var server = app.listen(8081, function() {

var host = server.address().address

var port = server.address().port

console.log("start at http:// %s:%s",host, port)

})

 

//////////////////////////////////////////////////////////////////

일단 실습을 위해 위에 코드를 복사 붙여넣기

# node sensor_post.js 

만약 위의 명령어로 실행이 안된다면 아래의 명령어를 입력후 다시 실행해보면된다.

export PATH=$PATH:/usr/local/nodejs/bin

 

자 이제 실행을 했으면 포스트맨을 설치 후 접속하면된다. 지난 포스팅에도 링크가 있다. 아래의 링크로 들어가서 포스트맨을 설치하면된다.

 

포스트맨 다운로드 링크: https://www.getpostman.com/apps

자 이제 실행을 했으면 포스트맨을 설치 후 접속하면된다. 지난 포스팅에도 링크가 있다. 아래의 링크로 들어가서 포스트맨을 설치하면된다. 포스트맨을 설치 후 post를 하기위해 아래와 같이 설정해준다. 데이터베이스에 id와 name 테이블에 파싱해서 데이터 입력을 해주기 위해서 일치시켜줘야 한다.

 

key-value 형식이다. 데이터베이스에서 key값이 id, name이였고 그에 해당하는 value는 사용자가 입력해주면 된다. 근데 아마 id value는 int 형으로 설정했으니 int형만 가능하고 다른 값을 입력해서 send를 누르면 에러 메시지가 뜰것이다.

자 이제 send를 누르면 아래 succees라고 뜰것이다. 만약 오류가 난다면 댓글 ㄱㄱ / 나의 경우 id의 value는 1 name의 value는 ssong로 입력하고 send를 하였다. 성공적으로 날라갔기 때문에 값이 저장된것을 확인할 수 있다. 

 

 

 

실습은 여기까지다. 이제 node 코드를 분석해야한다. 하지만... 이거는 나중에...

다시 포스팅을 수정해서 올리도록 하겠다. 아마 위의 코드만으로 충분히 실습이 가능할것이다.