user.controller.js 2.27 KB
Newer Older
우지원's avatar
우지원 committed
1
import User from "../models/User.js"
우지원's avatar
a    
우지원 committed
2
import user from '.../client/src/Pages/SignUpPage.js'
우지원's avatar
우지원 committed
3
4
5
6
7
8
import isLength from 'validator/lib/isLength.js'
import isEmail from 'validator/lib/isEmail.js'
//꼭 js붙여주기!!

//sign validation해야됨
const signup = async (req, res) => {
우지원's avatar
a    
우지원 committed
9
10

    const { username, nickname, email, password } = req.body
우지원's avatar
우지원 committed
11
    //req.body를 구조분해하여 각각 보이게함 -> 모든정보들이 한줄에 보임
우지원's avatar
a    
우지원 committed
12
    console.log(username, nickname, email, password)
우지원's avatar
우지원 committed
13
14
15

    try {

우지원's avatar
a    
우지원 committed
16
        if (!isLength(username, { min: 3, max: 10 })) {
우지원's avatar
우지원 committed
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
            //이범위를 벗어나면 error발생
            return res.status(422).send('Name must be 3-10 characters')
            //422 : 형식이 잘못되었다는 error발생
        } else if (!isLength(nickname, { min: 3, max: 10 })) {
            return res.status(422).send('Nickname must be 3-10 characters')
        } else if (!isEmail(email, {
            allow_display_name: true,
            require_display_name: true,
            allow_utf8_local_part: false,
        })) {
            return res.status(422).send('Email does not fit the format')
        } else if (!isLength(password, { min: 6, max: 25 })) {
            return res.status(422).send('Nickname must be 6-25 characters')
        }

        const newUser = await new User({
우지원's avatar
a    
우지원 committed
33
            username,
우지원's avatar
우지원 committed
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
            nickname,
            email,
            password,
            //required를 하였기 때문에 이중 하나라도 없으면 에러 발생
        }).save()
        //save시 user schema형식에 맞는지 확인후 틀리면 error발생 맞으면 mongooDb로 들어감
        //save(promise)붙일 시 fuction 앞에 await 붙여주기 + async 함수 앞에 붙여주기
        console.log(newUser)
        res.json(newUser)

    } catch (error) {
        //알수없는 모든 에러발생시 처리
        console.log(error)
        res.status(500).send('User signup error')
    }

    //newUSer (객체)를 json형식으로 바꿔서 객체열로 보냄
    //res : 응답하는 객체
    //응답안할 시 browser에서 빙빙돌다 에러 발생 -> 꼭 붙여줘야됨!
    //res는 한번만 실행. 두번하면 에러 발생
}

const hello = (req, res) => {
    res.send('Hello from users controller')
}

export default { signup, hello }
// {} : 객체로 return함