Node+React [Node(3)]
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 }
수정 후, 다시 서버를 껐다가 돌리니 오류가 해결 되고 값이 잘 나오는 것을 확인했다.
Author And Source
이 문제에 관하여(Node+React [Node(3)]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@qhahd78/NodeReact-Node3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)