안녕하세요 강의 잘 보고있습니다. 다름이 아니라 강의 중 시스템 예외상황이 아닌 비지니스 예외상황(ex. 중복멤버처리, 강의엔 없지만 만료쿠폰사용 등등)에서 exception을 던져 처리하시는 것으로 봤는데 제가 배우기로는 일반적으로 IO 등이 아닌 개발자가 예상가능한 상황에 대해서는 예외를 던지지 않고 null이나 값을 리턴함으로서 처리하는 것으로 알고 있습니다. exception should be exceptional 이라는 구절처럼 말이죠. 혹시 해당 강의와 관련이 없는 부분이라 단순화 시켜 편의상 처리하신 것인지 아니면 실제로 실무에서는 exception을 던지는 것이 관행인지(외래키는 거는것이 정도이지만 그렇지않는 경우도 있는 것처럼) 궁금하여 글을 남깁니다. 감사합니다.
minSdkVersion을 21로 변경했더니 경고문이 나타납니다. 에러가 뜨네요,, // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Add your own signing config for the release build. 메세지는 위와같이 두개 뜹니다
안녕하세요 영한님, 항상 좋은 강의 감사드립니다. 지금까지 쭉 수강해오면서 오늘 처음으로 질문을 남깁니다. 강의에서 말씀해주신대로 @ManyToOne 또는 @OneToOne은 Eager가 default 이기때문에 N+1 문제 또는 테이블이 여러개 일 경우에 join이 걸려 굉장히 문제가 될 수 있는 쿼리를 만들어 낼 수 있기 때문에 다대일, 일대일 관계들은 Lazy로 놓는 것은 이해가 되었습니다. 그럼 실무에서는 MyBatis를 사용하여 SQL을 매핑하던 것처럼 DB의 관점으로 개발하던 방식과 유사하게 상황과 필요에 따라서 향후 fetch join 또는 엔티티 그래프 라는 기능들을 활용하여 개발하는 것인가요 ?
안녕하세요. 제로초님 다름이 아니라 router.get(':/id') 남의 정보 가져오는 라우터인데 여기에 const jsonUser = user.toJSON() 하고 res.json(jsonUser)하셔서 보냈잖아요. 여기서 궁금한거 jsonUser말고 const user = await db.User.findOne({})으로 해서 한번 보내봤는데 CORS 등 에러가 뜨더군요 이 이유가 먼지 궁금합니다.
안녕하세요! 강의 너무 잘듣고있습니다. 진행중에 막히는 부분이 생겨 질문드립니다. generateToken을 할때 token을 만들어주고 model 단에서 user.save()를 통해 token을 저장한다고 알고있습니다. 그런데 save() 함수에 들어간 후 부터 response가 오지 않고, 에러도 뜨지 않으며 sending request 에서 멈추는 현상이 있습니다. 1. save 함수 이전까지 console로 찍어서 동작이 되는걸 확인하였습니다. 코드가 같은데 왜 이런현상이 일어나는지 잘 모르겠습니다 ㅠㅠ 제 생각에는 var user = this; 에서 mongoose 객체를 가져올때 문제가 생기는거 같습니다. (이전 회원가입때 사용한 save() 함수는 ctrl 을 눌러서 해당 함수로 이동이 가능하지만 로그인에서 사용한 save() 함수는 함수로 이동이 안되었습니다.) user.save(function (err, user) { console.log("test") // 해당 로그도 출력이 안되는걸로 보아 save function에서 어떤 문제가 있는것 같습니다. ㅠ if(err) return cb(err); cb(null, user); }); *추가 07/28* app.post('/api/users/login', (req, res)=>{ // email을 db에서 조회 User.findOne({email : req.body.email}, (err, userInfo) => { if(!userInfo){ return res.json({ loginSuccess : false, message : "일치하는 이메일이 없습니다." }) } // email이 있다면 비밀번호 체크 userInfo.comparePassword(req.body.password, function(err, isMatch) { if(!isMatch){ return res.json({loginSuccess:false, message:"비밀번호가 틀렸습니다."}); } //비밀번호까지 맞으면 토큰 생성. userInfo.generateToken((user) => { const userSave = new User(user) userSave.save((err,userInfo)=>{ // 가져온 토큰으로 저장 if(err) return res.status(400).send(err); res.cookie("x_auth", userInfo.token) .status(200) .json({loginSuccess:true, userId: userInfo._id}); }) }); }); }) }); User.js 에서 const user = this; 로 받아올때 user 정보는 정상적으로 가져오지만, save() 함수는 호출할 수 없는걸 확인했습니다. 그래서 위와 같이 app.js 에서 해결했는데 괜찮은가요? https://www.inflearn.com/questions/30724 이 글이랑 비슷한 증상인것 같습니다. 2. 부가적인 질문입니다. save() 함수 안에서 선생님께서는 if(err) return cb(err); // save 실패시 cb(null, user); // save 성공시 이와 같이 코드를 작성하셨는데, if 단에서는 callback 함수를 return 해주는데 성공시에는 왜 return을 사용하지 않고 cb 함수를 호출하는지 알수있을까요? 두가지의 차이가 무엇인지 궁금합니다. 혹시나 도움이 되실까 싶어 github 주소를 남기겠습니다. https://github.com/dding-g/node-study 감사합니다.
안녕하세요 강의 11:30 을 보면 교수님이 본인 컴퓨터의 core 와 logical processors의 개수를 살펴보고 계신데요 . 제가 검색을 조금 해보니 코어수x2 = 쓰레드의 수 라는 말이 많더라구요. 그렇담 logical processor = thread 인거고, 쓰레드는 최대 16개(여기서는)까지 동원할 수 있는건가요?