-Westagram Backend Project -
- TypeORM 설치 및 적용
- dbConnection 정상 작동 확인
아래 링크에서 진행했던 TypeORM 설치에서 이어져서,
dbConnection 설정
dbConnection 정상 작동 확인 : 백엔드 백백엔드 연결
github > wecode_server > app3withDB.js 에서 파일을 가져와서, 연결
dotenv(.env)를 사용할 수 있게 다음의 명령어를 작성 --- app3.js에 .env 연결
const dotenv = require("dotenv") dotenv.config()
Dotenv 파일(.env) 내 환경변수 설정법 / .env 파일을 vscode에 따로 만들어서 이 코드를 따로 뺀다 (.env 파일에 아래 코드 넣기)
TYPEORM_CONNECTION = mysql
TYPEORM_HOST = 127.0.0.1
TYPEORM_USERNAME = root
TYPEORM_PASSWORD = myPassword (mysql 로그인 비밀번호 적기)
TYPEORM_DATABASE = mysql로 만든 데이터베이스 이름 적기
TYPEORM_PORT = 3306
TYPEORM_LOGGING =TRUE
이게 mysql로 database 가져오는거/ typeorm을 DataSource 모듈을 불러옵니다
const { DataSource } = require('typeorm');
.env 파일에 저장해놓은 환경 변수들을 불러와 DataSource 명령어를 통해서 db와의 커넥션 환경 세팅을 완료합니다.(vscode에 작성 코드)
const myDataSource = new DataSource({
type: process.env.TYPEORM_CONNECTION,
host: process.env.TYPEORM_HOST,
port: process.env.TYPEORM_PORT,
username: process.env.TYPEORM_USERNAME,
password: process.env.TYPEORM_PASSWORD,
database: process.env.TYPEORM_DATABASE
})
그리고 initialize() 메소드를 통해 실제 연결을 완료
myDataSource.initialize()
.then(() => {
console.log("Data Source has been initialized!")
})
express app 으로 서버를 만듭니다.
const server = http.createServer(app)
서버를 시작하는 함수
const start = async () => {
try {
server.listen(8000, () => console.log(`Server is listening on 8000`))
} catch (err) {
console.error(err)
}
}
start()
나머지는 원래 코드
const http = require('http')
const express = require('express')
const app = express()
app.use(express.json()) // for parsing application/json
app.get("/", async(req, res) => {
try {
return res.status(200).json({"message": "Welcome to Soheon's server!"})
} catch (err) {
console.log(err)
}
})
const dotenv = require("dotenv")
dotenv.config()
const http = require('http')
const express = require('express')
// 이게 mysql로 database 가져오는거
const { DataSource } = require('typeorm');
const myDataSource = new DataSource({
type: process.env.TYPEORM_CONNECTION,
host: process.env.TYPEORM_HOST,
port: process.env.TYPEORM_PORT,
username: process.env.TYPEORM_USERNAME,
password: process.env.TYPEORM_PASSWORD,
database: process.env.TYPEORM_DATABASE
})
myDataSource.initialize()
.then(() => {
console.log("Data Source has been initialized!")
})
const app = express()
app.use(express.json()) // for parsing application/json
//서버 띄우는 get
app.get("/", async(req, res) => {
try {
return res.status(200).json({"message": "Welcome to Soheon's server!"})
} catch (err) {
console.log(err)
}
})
//과제2
// user 가져오는 get
//1. API 로 users 화면에 보여주기
//get 안의 첫번째 인자가 url --> 맨 밑의 server.listen 첫 인자 8000 -> localhost:8000/users
app.get('/users', async(req, res) => {
try {
// query DB with SQL
// Database Source 변수를 가져오고.
// SELECT id, name, password FROM users;
const userData = await myDataSource.query(`SELECT id, name, email FROM USERS`)
// console 출력
// 서버 화면에 띄우는 거 (javascript는 화면에 띄우려면 console.log 띄어야하니/ . 있으면 다 js연결)
console.log("USER DATA :", userData)
// consolelog로 띄우는 게 FRONT 전달
// 함수 있으니까 반환
return res.status(200).json({
"users": userData
})
} catch (error) {
console.log(error)
}
})
//2. users 를 post로 생성, /users -> mysql의 users table에 생성
app.post("/users", async(req, res) => {
try {
// 1. user 정보를 frontend로부터 받는다. (프론트가 사용자 정보를 가지고, 요청을 보낸다) -> postman body에 받는다
const me = req.body
// 2. user 정보 console.log로 확인 한 번!
console.log("ME: ", me)
// 3. DATABASE 정보 저장.
// body에서 빈 창에 데이터 자세하게 적고, 여기로 와서 양식 쓰기
const name2 = me.name
const password2 = me.password
const email2 = me.email
const userData = await myDataSource.query(`
INSERT INTO users (
name,
password,
email
)
VALUES (
'${name2}',
'${password2}',
'${email2}'
)
`)
// 4. DB data 저장 여부 확인
console.log('inserted user id', userData.insertId)
// 5. send response to FRONTEND
return res.status(201).json({
"message": "userCreated"
})
} catch (err) {
console.log(err)
}
})
// 과제 3 DELETE
// 가장 마지막 user를 삭제하는 엔드포인트
app.delete("/users", async(req, res) => {
try {
} catch (err) {
console.log(err)
}
})
// 과제 4 UPDATE
// 1번 user의 이름을 'Code Kim'으로 바꾸어 보세요.
app.put("/users/1", async(req, res) => {
try {
const newName = req.body.data.name
} catch (err) {
console.log(err)
}
})
myDataSource.initialize()
.then(() => {
console.log("Data Source has been initialized!")
})
const server = http.createServer(app) // express app 으로 서버를 만듭니다.
const start = async () => { // 서버를 시작하는 함수입니다.
try {
server.listen(8000, () => console.log(`Server is listening on 8000`))
} catch (err) {
console.error(err)
}
}
start()
그리고 터미널에서 node [파일이름].js로 실행시켜서
아래와 같이 intialized! 가 나오면 서버 연결 된 거다!
다시 여기에 치려면 ctrl+c로 연결 끊고 다시 쳐야 함 (맥북도 command아닌 ctrl)
그리고 또 다시 node 실행 시키고 (node [파일이름].js로)