Node+React [Node(3)]

9169 단어 node.jsnode.js

Schema(스키마) ?

구조의 형식, 값 등을 규정. 모델의 틀이라고 생각하면 된다.

1. User 모델 생성

const mongoose = require('mongoose');

const userSchema = mongoose.Schema({
    name: {
        type: String,
        maxlength: 50
    },
    email: {
        type: String,
        trim: true,
        unique: 1
        
    },
    password: {
        type: String,
        minlength: 5
    },
    lastname: {
        type: String,
        maxlength: 50
    },
    role: {
        type: Number,
        default: 0
    },
    image: String,
    token:{
        type: String
    },
    tokenExp: {
        type: Number
    }

})

//모델로 감싸기 
const User = mongoose.model('User', userSchema)

//다른 곳에서도 쓸 수 있게 exports
module.exports = { User }

다음과 같이 mongoose를 사용하여 모델을 생성하며 name, password 와 같은 값들의 타입, 최대글자수 등을 지정해준다.
exports 해줌으로써 다른 곳에서도 이 모델을 쓸 수 있게 한다.

2. 회원가입 기능

1) client 가 보낸 데이터를 받아 DB에 넣어주는 기능을 실행하기 위해 Body-parser 를 설치

npm install body-parser --save 

2) index.js 를 다음과 같이 작성

app.post('/register', (req, res) => {
    //회원 가입 할 때 필요한 정보들을 client 에서 가져오면
    //그것들을 데이터 베이스에 넣어준다.
    

    //body-parser를 이용. 클라이언트에 보내느 정보를 받음. 
    const user = new User (req.body)

    //정보들을 유저  모델에 저장. 
    user.save((err, userInfo) => {
        if(err) return res.json({success: false, err})
        return res.status(200).json({
            success: true
        })
    })
})

3) 서버를 실행

npm run start

4) Client 대신 reqeust 를 보내줄 PostMan 실행.

5) 형식을 POST 로 바꾸로, local host url 입력, 그리고 다음 내용을 입력한 후

{
    "name": "이름",
    "email": "이메일",
    "password": "비밀번호"
    
}

6) send 버튼을 누르면

에러가 뜬다. 씇..

TypeError: User is not a constructor

User는 모델이고.. 모델 설정에서 오류가 난건가? 싶어 코드를 하나하나 뜯어봤는데 ... 내 코드에는 틀린 부분이 없었다.

//다른 곳에서도 쓸 수 있게 exports
module.exports = { }

근데 있었다.

모델을 만들기만 하고 exports 를 안 해줬으니 당연히 오류가 발생했다.

//다른 곳에서도 쓸 수 있게 exports
module.exports = { User }

수정 후, 다시 서버를 껐다가 돌리니 오류가 해결 되고 값이 잘 나오는 것을 확인했다.

좋은 웹페이지 즐겨찾기