< Express 파일 구조 >
routes: 라우팅 정보를 가집니다.
controller: 라우팅 정보에 의해 전달된 처리를 하는 로직입니다.
여기서 다시 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 |