게시글
질문&답변
2021.05.17
e.keyCode 질문
안녕하세요, Amen님! keyCode 기능은 더 이상 권장되지 않습니다. 일부 브라우저에서는 여전히 동작할 수 있지만, 이미 관련 웹 표준에서 제거되었을 수 있으며 삭제되는 과정에 있거나 호환성 목적으로만 보관할 것입니다 사용을 피하시고 가능한 경우 기존 코드를 업데이트하셔야 합니다. duplicated된 기능은 가급적으로 사용하지 않으시는 것이 좋습니다. 대체안으로 KeyboardEvent.code 가 사용된다고 합니다. keyCode 문서는 여기 를 참고해주세요. 대체안인 KeyboardEvent.code 문서는 이 곳 을 참고해주시면 됩니다 :) 밑에는 예제 코드입니다 ! 참고해주세요 . window.addEventListener("keydown", function(event) { if (event.defaultPrevented) { return; // Do nothing if event already handled } switch(event.code) { case "KeyS": case "ArrowDown": // Handle "back" updatePosition(-moveRate); break; case "KeyW": case "ArrowUp": // Handle "forward" updatePosition(moveRate); break; case "KeyA": case "ArrowLeft": // Handle "turn left" angle -= turnRate; break; case "KeyD": case "ArrowRight": // Handle "turn right" angle += turnRate; break; }
- 0
- 2
- 838
질문&답변
2021.04.22
로그인 userId값 질문이요
안녕하세요, 초코tv님! (사진) 위의 코드를 보시면, json으로 반환되는 부분에서 userId가 user._id로 되어있는 것을 보실 수 있습니다. 이것은 초코tv님이 처음에 회원가입할 때 입력한 유저의 id가 아닌, mongoDB에서의 식별자 _id입니다. 실제로 mongoDB에서 본인의 데이터베이스를 확인해보면, 아래와 같이 나옵니다. (사진) 회원가입 시에 입력한 유저의 id는 name으로 저장되어있고, _id에 ObjectID("~~") 부분이 보이실텐데요, 바로 이 부분을 json에서 반환해주는 것입니다. 데이터베이스를 확인해보는 방법은, 실습 시에 만드신 클러스터를 클릭해 들어가신 후 (사진) Collections 탭에 들어가시면 실습 시에 Postman으로 입력한 데이터베이스 데이터들이 들어있습니다. 혹시 궁금한 점 있으시면 댓글 남겨주세요. 도움이 되었으면 좋겠습니다 :)
- 0
- 1
- 142
질문&답변
2021.04.22
toString()대신 toHexString() 을 사용한 이유가 궁금합니다~!!
안녕하세요, 김동욱님! toHexString()의 정의는 아래와 같습니다. toHexString() Return the ObjectID id as a 24byte hex string representation. 해석해보면 ObjectID 형태의 id를 24바이트의 hex 문자열로 바꾸어 리턴해주는 함수입니다. 사실, 코드를 뜯어보면 toString()은 toHexString()을 리턴합니다. (사진) 위의 사진을 보면, toString이 toHexString을 반환하는 것을 보여줍니다. 즉, toString이 toHexString의 상위 함수로 볼 수 있을 것 같습니다. (toString은 toHexString을 래핑합니다.) 결국 현재 프로젝트 코드에서 toHexString 부분을 toString으로 바꾸어서 실행해도 오류는 발생하지 않습니다. 제 생각에는, MongoDB에서 제공하고 있는 예제 코드에서도 toHexString으로 사용하고 있고, toString에 포함되어서 더 좁은 의미의 함수이기 때문에 예외발생률이 적어서 사용되는 것이 아닐까 싶습니다. 다른 의견이 있다면, 댓글 남겨주세요. 도움이 되었으면 좋겠습니다 :)
- 0
- 1
- 2.7K
질문&답변
2021.04.22
toHexString()이 정확히 무슨 메소드이죵?
안녕하세요, k0502s님! 강의에서 toHexString()을 적용하기 전에 발생한 에러는 아래와 같습니다. Error: Expected "payload" to be a plain object. 해석하자면 "payload"가 plain object 이어야 한다는 뜻입니다. 즉, jwt.sign(payload, secretKey) 함수에서 payload는 string 형식이어야 합니다. 하지만, mongodb에서 생성된 user._id로 사용한 _id는 string 형식이 아닙니다. 따라서 toHexString() 메서드를 활용해서 형변환을 해주어야 합니다. toHexString() 메서드는 아래와 같습니다. toHexString() Return the ObjectID id as a 24 byte hex string representation. 해석해보면 ObjectID 형태의 id를 24바이트의 hex 문자열로 바꾸어 리턴해주는 함수입니다. 혹시 궁금하신 점이 있다면 댓글 남겨주세요. 도움이 되었으면 좋겠습니다. :)
- 1
- 1
- 656
질문&답변
2021.04.22
에러가 발생합니다 ㅠ
안녕하세요, tlduf95님! 코드를 보면, user.generateToken 부분 if를 봐주세요. if (Err) 라고 err의 오타가 난 것 같습니다. if (err) 로 변경 후 다시 Postman으로 확인해주시면 정상 작동할 것 같습니다. 그 외에 다른 코드에는 문제가 없는 것 같습니다. 혹시, 고쳤음에도 에러가 발생하면 댓글 남겨주세요. 도움이 되었으면 좋겠습니다 :)
- 0
- 1
- 445
질문&답변
2021.04.22
isModified 부분 질문을 드립니다.
안녕하세요, Sounghyun Jeon님! isModified() 라는 함수는 mongoose 모듈에 포함되어있는 함수입니다. 파라미터로 들어온 값이 db에 기록된 값과 비교해서 변경된 경우는 true를, 그렇지 않은 경우는 false를 반환하는 함수입니다. user 생성 시에는 항상 true이며, user가 수정되는 경우에는 password가 변경되는 경우에만 true를 반환합니다. user.password의 변경이 없는 경우라면 이미 해당 위치에 hash가 저장되어있으므로 false를 반환해 다시 암호화를 하지 않습니다. 현재 생성한 userSchema가 mongoose를 활용해서 생성한 schema이기 때문에 mongoose 모듈에 포함되어있는 isModified() 를 사용할 수 있다고 이해하시면 될 것 같습니다. 혹시 궁금하신 점이 있다면 댓글 남겨주세요. 도움이 되었으면 좋겠습니다. :)
- 1
- 1
- 890
질문&답변
2021.04.22
질문 있습니다!
안녕하세요, sikK님! User 모델을 구축할 때, 이메일을 unique로 설정한 것을 기억하실겁니다. 만약, 이메일이 다른 이름과 비밀번호가 동일한 유저는 데이터베이스에 저장될 것입니다. 하지만 이메일이 중복된다면 error 메세지가 json 응답으로 넘어옵니다. (사진) 위의 사진은 제가 Postman에서 이메일이 중복되는 유저를 post했을 때 받은 에러메세지입니다. 따라서, 이미 가입한 사람이 회원가입을 하려고 할 시에는 Client로 회원가입 성공 여부가 false로 전달되고 에러 메세지까지 전달됩니다. 만약 sikK님께서 이름도 unique하게 설정하고싶다면, 모델 파일인 User.js에서 unique 설정을 추가해주시면 됩니다. 혹시 궁금하신 점이 있다면 댓글 남겨주세요. 도움이 되었으면 좋겠습니다. :)
- 0
- 1
- 168
질문&답변
2021.04.22
IP도 설정하고 다 해봤는데 오류가 계속발생합니다
안녕하세요, rnrneks150님! MongoParserError: Invalid connection string 위의 에러는 일반적으로 url에 오타가 있거나, 잘못 적으셨을 때 발생하는 에러입니다. rnrneks150님이 입력해주신 mongoose.connection() 부분의 url 부분에 username이 초기에 설정하신 username과 동일한지 확인해주세요. username과 password가 틀리지 않음에도 계속 에러가 뜬다면, username 앞부분의 mongodb라는 철자가 바른지 확인해주세요. 따로 코드가 첨부되어있지 않아서 정확하게 도와드리지 못하는 점 양해 부탁드립니다. 계속 오류가 발생하신다면, mongoDB에서 제공하는 예제를 따라하는 것도 방법이 될 것 같습니다. const MongoClient = require('mongodb').MongoClient; const uri = "mongodb+srv://username:password@cluster0.lmq5s.mongodb.net/DBname?retryWrites=true&w=majority"; const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); client.connect(err => { const collection = client.db("test").collection("devices"); // perform actions on the collection object client.close(); }); 위의 코드 내용이 mongoDB에서 제공하는 예제코드입니다. uri 부분의 이름과 비밀번호 부분들을 바꾸어서 시도해보시면 좋을 것 같습니다. 혹시 궁금하신 점이 있다면 댓글 남겨주세요. 도움이 되었으면 좋겠습니다. :)
- 0
- 1
- 205
질문&답변
2021.04.17
비주얼 스튜디오
안녕하세요, sans4976 님! WARNING: You are using pip version 20.2.3; however, version 21.0.1 is available. 해당 부분을 보니, pip 버전이 21.0.1이 필요한데 현재 질문자분 pip 버전은 20.2.3 이라서 발생한 오류인 것 같습니다. 따라서, pip 버전을 업그레이드 해주시면 에러가 해결될 것 같습니다. 리눅스 환경에서 pip 업데이트 pip install --upgrade pip 윈도우 환경에서 pip 업데이트 python -m pip install --upgrade pip pip 버전 확인 pip --version 위의 명령어를 활용해서 pip를 업데이트 해주시면 될 것 같습니다! 혹시 궁금하신 점이 있다면 댓글 남겨주세요. 도움이 되었으면 좋겠습니다. :)
- 0
- 1
- 261
질문&답변
2021.04.09
최대 부분 증가수열 max(dy)가 안되는 이유를 모르겠습니다.
안녕하세요, wndud님! 우선 해당 오류가 발생한 이유는 파이썬 예약어를 변수명으로 사용하였기 때문입니다. 이러한 예약어들은 각각의 기능들이 있는 함수이기 때문에, 변수명으로 사용하게되면 오류가 발생합니다. 현재 wndud님이 작성해주신 코드를 보면 max를 변수명으로 사용한 후에 max() 함수를 다시 사용해 이름 중복으로 인해 해당 오류가 발생하게 된 것으로 보입니다. 이를 해결하기 위해서는 변수명을 max가 아닌 다른 변수로 바꿔준 후에 max() 함수를 다시 print 해보시면 될 것 같습니다. 또는, 해당 변수명을 사용한 후에 max() 함수를 호출하기 전에 del 변수명 을 사용해 변수를 지워주는 형태도 가능할 것 같습니다. 혹시 궁금하신 점이 있다면 댓글 남겨주세요. 도움이 되었으면 좋겠습니다. :)
- 0
- 1
- 234