구조의 형식, 값 등을 규정. 모델의 틀이라고 생각하면 된다.
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 해줌으로써 다른 곳에서도 이 모델을 쓸 수 있게 한다.
npm install body-parser --save
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
})
})
})
npm run start
{
"name": "이름",
"email": "이메일",
"password": "비밀번호"
}
TypeError: User is not a constructor
User는 모델이고.. 모델 설정에서 오류가 난건가? 싶어 코드를 하나하나 뜯어봤는데 ... 내 코드에는 틀린 부분이 없었다.
//다른 곳에서도 쓸 수 있게 exports
module.exports = { }
근데 있었다.
모델을 만들기만 하고 exports 를 안 해줬으니 당연히 오류가 발생했다.
//다른 곳에서도 쓸 수 있게 exports
module.exports = { User }
수정 후, 다시 서버를 껐다가 돌리니 오류가 해결 되고 값이 잘 나오는 것을 확인했다.
짱구같은 면이 재밌네요!