mysql -u(계정 접근) [계정명] -p(비밀번호 입력)
$ mysql -u root -p
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)
);
mysql -u root < schema.sql
Access denied for user 'root'@'localhost' (using password: NO)
db 비밀번호가 설정되어 있어 접근 불가. mysql -u root -p < schema.sql로 대체
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 } ]
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');
}
})
}
},
// 생략
};
전에 만든 채팅 서버와 DB연결하여 데이서가 영속성을 갖도록 진행
ORM인 sequelize로 변경하였다.