Wecode 부트캠프 -Foundation 2/Error Handling

error handling (1) email, name, password가 다 입력되지 않은 경우, 비밀번호가 너무 짧은 때

JBS 12 2023. 9. 5. 18:06
const http = require('http')
const express = require('express')
const { DataSource } = require('typeorm');

const myDataSource = new DataSource({
type: 'mysql',
host: 'localhost',
port: '3306',
username: 'root',
password: '',
database: 'westagram'
})

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)
}
})

//1. API 로 users 화면에 보여주기
app.get('/users', async(req, res) => {
try {
// Database Source 변수를 가져오고.
// SELECT id, name, password FROM users;
const userData = await myDataSource.query(`
SELECT id, name, email FROM USERssssS;
`)

// FRONT 전달
return res.status(200).json({
"users": userData
})
} catch (error) {
console.log(error)
return res.status(500).json({
"message": error.message
})
}
})
//2. users 생성

app.post("/users", async(req, res) => { //구조: app.post 안에 try 함수 // try 함수 안에 if, throw//
try {
// 1. user 정보를 frontend로부터 받는다. (프론트가 사용자 정보를 가지고, 요청을 보낸다)
const me = req.body
console.log(me)

// 3. DATABASE 정보 저장.
// const name = me.name // 다나
// const password = me.password // 비밀번호
// const email = me.email // email

const { name, password, email } = me //구조분해할당

// (에러 만들기1) email, name, password가 다 입력되지 않은 경우
if (email === undefined || name === undefined || password === undefined) {
const error = new Error("KEY_ERROR")
error.statusCode = 400
throw error
}

// (에러만들기2) 비밀번호가 너무 짧을 때
if (password2.length < 8) {
const error = new Error("INVALID_PASSWORD")
error.statusCode = 400
throw error
}
 
 
 
const userData = await myDataSource.query(`
INSERT INTO users (
name,
password,
email
)
VALUES (
'${name}',
'${password}',
'${email}'
)
`)

// 5. send response to FRONTEND
return res.status(201).json({ //위의 try 함수에 대한 return
"message": "userCreated" // 여기까지 내려왔다는 건, 오류가 없다는 것, 그러니까 회원가입,유저 생성 된 거// 위에 try안에 오류가 생길 수도 있다고 한 게 없다는 거
}) //여기서 try 함수 끝났고, 다음 줄에 catch (try 안에 throw가 있으니까 catch 나와야 함. 근데 catch는 try 밖에 = throw는 밖으로 던지는거다 )
} catch (error) { //try안에 예상되는 오류 사항 적고, 밖에 catch 혹시 error 나면 여기로
console.log(error)

return res.status(error.statusCode).json({ //만약 에러가 나면 에러 났다고 'error.message' 프론트에게 보내고, 위에는 구체적 오류 메세지// 크게 보면 구조가 try, 여기 return!
"message": error.message
})
}
}) //구조: app.post 안에 try 함수, catch, return // try 함수 안에 if, throw// 아래 app.delete로 다시 시작

 

비밀번호 이메일 특수문자 

https://whitepro.tistory.com/245 

 

정규표현식, 비밀번호 특수문자 포함(자바, 자바스크립트, 파이썬)

비밀번호 : 문자+숫자+특수문자 가능한 정규식(22.03.02 추가) 영어 및 숫자를 허용하며, 숫자키와 관련된 특수문자만 허용한다. 일반적인 방식이다. ^[a-zA-Z\\d`~!@#$%^&*()-_=+]{8,24}$ ^[ ] : 대괄호 안의

whitepro.tistory.com

 

 

이메일 체크 정규식

const regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;

 

 

아이디나 비밀번호 정규식

const regExp = /^[a-z0-9_]{4,20}$/;

'Wecode 부트캠프 -Foundation 2 > Error Handling' 카테고리의 다른 글

에러 핸들링 2 [적용]  (0) 2023.10.27
error handling  (0) 2023.09.05