웹/DB

[MongoDB] MongoDB, Mongoose

Ellie67 2021. 3. 11. 22:01

client에서 데이터를 가져오면 데이터베이스에 넣어준다.

 

MongoDB의 라이브러리인 moongoose를 이용해서 데이터베이스와 연결한다.

npm install mongoose

 

--회원가입--

 

1. 데이터베이스와 연결

mongoose.connect(config.mongoURI, {
  useNewUrlParser: true, 
  useUnifiedTopology: true, 
  useCreateIndex: true, 
  useFindAndModify: false
}).then(() => console.log('MongoDB Connected...'))
  .catch(err => console.log(err))

 

useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false

이렇게 적어주지 않으면 오류남

 

 

2. 스키마 생성

const userSchema = mongoose.Schema({
  name: {
    type: String,
    maxlength: 10
  },
  email: {
    type: String,
    trim: true,
    unique: 1
  },
  password: {
    type: String,
    minlength: 5
  },
  token: { // 유효성 관리
    type: String
  }
})

 

 

3. 모델 생성

const User = mongoose.model('User', userSchema);

 

 

4. 라우팅 메소드

: 클라이언트 요청에 응답하기 위해서 express 클래스의 인스턴스에 연결

 app.post('/api/users/register', (req, res) => {

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

 

 

4. PostMan에서 데이터 입력(서버 켜야함)

post 방식을 사용했고, request URI에 http://localhost:포트번호/api/users/register을 입력하면 된다.

그리고 Body -> raw에 데이터를 입력한다. JSON 방식으로 입력해준다.

 

파란색 버튼 Send를 누르면 데이터가 MongoDB에 저장된다.

 

 

 

MongoDB에서 확인해보면 PostMan에서 입력했던 데이터가 들어와있다.

password가 저렇게 이상하게 되어있는 이유는 password의 보안을 위해 암호화 해놓은 것이다.

다음에 다루도록 하겠다.