본문 바로가기
AWS

Flutter + Node.js +RDS+EC2 데이터 통신 (3)

by Kim JK 2021. 9. 11.
반응형

지난글에서 MySQL Workbench에 테이블을 생성하는 것 까지 했다.

 

이제 테이블에 Node js를 통해 플러터에서 무언가를 쏴줘야 할것이다.

 

그렇다면 Node.js로 회원가입을 하는 코드를 짜봅시다

 

 

VScode를 키고

 

const mysql = require('mysql');

 

const mysqlConnection = mysql.createConnection({

    host: 'rds 엔드포인트',

    user: 'mysql 유저이름',

    database: 'db이름',

    password: '비밀번호'

});

 

mysqlConnection.connect(function (error){

    if(error){

        console.log(error);

        return;

    }else{

        console.log('Database is connected');

    }

});

 

module.exports = mysqlConnection;

 

 

이렇게 db파일을 먼저 만들어주자.

 

그리고 새로운 js파일을 만드시고.

 

const {Router} = require('express'); 

const router = Router();

 

const mysqlConnection = require('../database/'); //본인이 db파일 넣으신 경로

 

router.get('/', (req,res=> {

    res.status(200).json('Server on port 8000 and database is connected');

 

});

 

이런식으로 우선 적어주신다음.

 

router.post('/:users', (req,res)=>{

    const userName = req.body.userName;

    const profileImg = req.body.profileImg;

    const phoneNumber = req.body.phoneNumber;

    const email = req.body.email;

    const chatRoomCode = req.body.chatRoomCode;

    const userState = req.body.userState;

    const stateMsg = req.body.stateMsg;

    const userId = req.body.userId;

    const birthday = req.body.birthday;

    

    var sql = 'INSERT INTO Users (userName, profileImg, phoneNumber, email, chatRoomCode,userState,stateMsg,userId,birthday) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);';

    var params = [userNameprofileImgphoneNumberemailchatRoomCode,userState,stateMsg,userId,birthday];

    mysqlConnection.query(sql,params,function(error,result){

        if(!error){

        

            res.json({result : truemsg : '회원가입에 성공'});

        

        }else{

            console.log(error);

        }

    });

});

module.exports = router;

 

요런식으로 post방식으로 넣는 코드를 짜보았다.

 

저장을 하시고 새로운 파일을 하나더만든다.

 

index역할을 할 파일이 필요하다.

 

const express = require('express');

const app = express();



app.set('port'process.env.PORT || 3000); //본인이 사용할 포트 입력

app.use(bodyParser.json({extended: true})); 

app.use(bodyParser.urlencoded({extended: true})); 

 

app.use(express.json());

 

app.use(require('./')); //위에 insert구문을 짠 js파일의 경로를 안에 넣어주세요.

 

app.listen(app.get('port'), ()=>{

    console.log('Server on port'app.get('port'));

})

 

 

이렇게 만들어진 3개파일을 넣어주시고

 

https://www.postman.com/ 에서 테스트를 해본다.

 

만약 지금까지 따라왔는데 안되는 경우는 

 

1. 경로가 틀렸거나

 

2. 보안규칙에서 포트를 안열어뒀거나 (EC2 인스턴스 , RDS 인스턴스 둘다확인)

 

이제 Flutter로 온다.

 

Dio를 구비해주시고 (pub.dev 가셔서 받으시면됩니다.) Dio는 http통신을 도와주는 라이브러리에요

 

 

회원가입 버튼을 눌렀을때 이런식으로 처리를 해주시면됩니다.

 

http://엔드포인트:포트/경로 

 

이런식으로 적으시면되는데

 

여기서 엔드포인트는 EC2인스턴스의 엔드포인트입니다. 

 

이러면 무난하게 mysql에 잘들어간것을 확인할수있다.

 

반응형