🌿 Node

express 파일 구조와 몽고 디비

ji-hyun 2022. 2. 16. 14:18

< Express 파일 구조 >

 

routes: 라우팅 정보를 가집니다.

controller: 라우팅 정보에 의해 전달된 처리를 하는 로직입니다.

 

routes

 

controller -> signUp 함수 호출

 

 

 

여기서 다시 signUpService 호출

 

 

services : controller 에서 전달된 정보에 의해서 DB 처리 등을 담당합니다.

 

 

db.findOne , db.save() 등의 메서드를 이용합니다.

 

 

 

 

 

 

 

< 몽고 디비 쿼리문 >

 

Users.findOne({ name: 'zerocho' }, (err, result) => {
  if (err) {
    throw err;
  }
  Users.update({ name: result.name }, {
    updated: true,
  }, (err, updateResult) => {
    if (err) {
      throw err;
    }
    console.log(updateResult);
  });
});

 

 

Users.findOne({ name: 'zerocho' }).exec()
  .then((result) => {
    return Users.update({ name: result.name }, { updated: true }).exec();
  })
  .then((updatedResult) => {
    console.log(updatedResult);
  })
  .catch((err) => {
    console.error(err);
  });

 

 

 

User.findOne({ name: 'zerocho' }) 쿼리입니다.

몽구스 4버전부터 쿼리가 then을 지원합니다. 3버전까지는 쿼리를 프로미스로 만들기 위해서 뒤에 exec()을 필수로 붙여주어야 했습니다. 4버전부터는 필수는 아니지만 그래도 붙이는 것을 추천합니다.

 

 

 

 

 

 

 

 

 

const newUser = new Users({
  name: 'zerocho',
  updated: false,
});
newUser.save()
  .then((savedUser) => {
    console.log(savedUser);
  })
  .catch((err) => {
    console.error(err);
  });

 

객체를 생성하는 메소드인 save()도 자체적으로 promise입니다. (save는 exec을 붙이지 않습니다)

 

 

 

나중에 async/await으로 전환도 가능합니다.

 

 

 

try {
  const result =  await Users.findOne({ name: 'zerocho' }).exec();
  const updatedResult = await Users.update({ name: result.name }).exec();
  console.log(updatedResult);
} catch (err) {
  console.error(err);
}

 

 

 

 

 

 

 

 

 

 

 

 

'🌿 Node' 카테고리의 다른 글

express 공부  (0) 2022.02.20
espress 기초 다지기 - 미들웨어편  (0) 2022.02.20
노드 이해하기2  (1) 2022.02.13
GET, POST, DELETE, PUT  (0) 2022.02.13
노드 이해하기  (0) 2022.02.13