본문으로 건너뛰기

Study

mongoDB, mongoose

db는 프론트엔드와 직접적으로 연동시키지 않는다. 프론트엔드에서 db에 접근할 수 있다는 것은 모두가 볼 수 있다는 것이고, 그러면 보안성에 문제가 있다는 것이니깐. mongoDB와 백엔드를 연결한다.

서드파티 라이브러리

  • express
  • body-Parser
  • nodemon
  • mongodb
  • mongoose mongodb만을 사용하여 mongodb atlas에 연결하여 사용할 수도 있지만 connect이후 db에 연결하고, close해야되는 등 귀찮은 과정이 많은데 mongoose를 통해 이를 단순화할 수 있다.

기본 백엔드 작성하는 것처럼 작성하고, 미들웨어 함수를 짤 때 db와 연결한다.
mongoose를 사용하기 위해 model을 만든다. 객체느낌으로, 함수에서 인스턴스화 시킬 수 있다.

// product.js <- model
const mongoose = require('mongoose');

const productSchema = new mongoose.schema({
...
});

module.exports = mongoose.model('product',productSchema);

db와 데이터를 주고받는 과정은 비동기로 진행되니 async/await을 사용한다.
mongoose와 연결시키고, save(),find()를 통해 접근할 수 있다.

//mongoose.js
const mongoose = require('mongoose');
const product = require('./models/product');
const URL = 'mongodb+srv://<아이디>:<비밀번호>@cluster0-g8eu9.mongodb.net/<컬렉션이름>?retryWrites=true&w=majority'
mongoose.connect(URL);

const createProduct = async (req,res,next)=> {
const createProduct = new product({
...
});
const result = await createProduct.save();
res.json(result);
}

exports.createProduct = createProduct;

mongoose를 import 해서 사용하는 곳은 app.listen(). then()에서 정상적으로 불러오면 실행시킨다.
database access, networkaccess를 설정해 database에 접근할 수 있다.