TIL_21.03.15(월) ~16(화)

nRecode·2021년 3월 15일
0

TodayILearned

목록 보기
91/95
post-thumbnail

03.15

MySQL 터미널에서 접근

mysql -u(계정 접근) [계정명] -p(비밀번호 입력)

$ mysql -u root -p

sql

DROP DATABASE IF EXISTS chat;
CREATE DATABASE chat;
USE chat;

CREATE TABLE users(
  user_ID int NOT NULL AUTO_INCREMENT,
  user_name varchar(255) NOT NULL ,
  PRIMARY KEY (user_ID)
);

CREATE TABLE messages(
  message_ID int NOT NULL AUTO_INCREMENT,
  message_content varchar(255) NOT NULL ,
  message_date timestamp DEFAULT CURRENT_TIMESTAMP,
  roomname varchar(255),
  user_ID int,
  PRIMARY KEY (message_ID),
  FOREIGN KEY (user_ID) REFERENCES users(user_ID)
);

vscode mysql connection

생활코딩 mysql 커넥션

오류 해결

mysql -u root < schema.sql
Access denied for user 'root'@'localhost' (using password: NO) 

db 비밀번호가 설정되어 있어 접근 불가. mysql -u root -p < schema.sql로 대체

MODEL, CONTROLLER

MODEL

DB와 직접적으로 소통

var db = require('../db');

module.exports = {
  messages: {
    get: function (callback) {
      var queryString = "SELECT * FROM messages";
      var queryArgs = [];

      db.dbConnection.query(queryString, queryArgs, (err, results)=>{
        if(err) callback(err,null)
        else callback(null, results);
      })

    }, // a function which produces all the messages
    post: function (body,callback) {
      var queryString = "INSERT INTO messages(message_content,roomname) VALUES(?,?)";
      var queryArgs = [body.text,body.roomname];
      
      
      db.dbConnection.query(queryString,queryArgs,(err,results)=>{
        if(err) callback(err,null);
        else callback(null,results);
      });

    } // a function which can be used to insert a message into the database
  },
  // 생략
};

쿼리문을 이용해서 db를 직접적으로 get 또는 post한다. 클라이언트에게 전해줄 상태코드나 메세지는 처리하지 않는다.

mysql.createConnection.query의 result는 query문 값을 리턴한다. array 형태로 JSON의 형식

console.log("model result:", results);

model result: [ RowDataPacket {
    message_ID: 1,
    message_content: 'Men like you can never change!',
    message_date: null,
    roomname: 'main',
    user_ID: null } ]

CONTROLLER

var models = require('../models');

module.exports = {
  messages: {
    get: function (req, res) {
      models.messages.get((err,data)=>{

        if(err){
          res.send(err);
        }else{
          res.status(200).send(data);
        }
      })

    }, 
    post: function (req, res) {
      models.messages.post(req.body,(err,data)=>{
        //console.log(data);
        if (err) {
          res.send(err);
        } else {
          res.status(201).send('ok');
        }

      })
    }
  },
  // 생략
};

03.16

서버와 연결

전에 만든 채팅 서버와 DB연결하여 데이서가 영속성을 갖도록 진행

Sequelize로 변경

ORM인 sequelize로 변경하였다.

profile
안정성, 확장성 있는 서버를 구축하고 가꾸는 개발자를 목표로 공부하고 있습니다. 🤔🤔🤔🤔 부족하기에 맞지 않는 내용이 있을 수 있습니다. 가감없이 피드백 해주시면 정말 감사하겠습니다..🙏

0개의 댓글