전체 글
-
[ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client 오류error handling 2023. 3. 18. 09:29
[ERR_HTTP_HEADERS_SENT] node 로 express를 통해 작업 중 pm2 log 확인 중이었는데 아래와 같은 오류가 발생했습니다. [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client 오류 [ERR_HTTP_HEADERS_SENT]는 서버가 클라이언트에 둘 이상의 응답을 보내려고 할 때 발생하는 오류라는 것을 발견했다. 즉 하나의 응답을 보낸 후, 또 다른 응답을 동시에 보내려고 할 때 생기는 오류 입니다. 예시 router.get("/", verifyToken, (req, res) => { if (req.user) { res.send(`${req.user.username}님 로그인 되었습니다.`);..
-
[ MongoDB ] .sort() 에러 (ft. query)Topic/Database 2023. 3. 11. 12:37
데이터를 최신순으로 가져오면서 필드의 값이 49를 넘지 않는 조건으로 찾을 때 이전 코드 todayCoupon = await Day.findOne({ kakao: { $lte: 49 } }).sort({ _id: -1 }); 이런 식으로 코드를 짰는데 자꾸만 todayCoupon이 undefined로 떠서 서비스에 문제가 생겼었다. 이것을 해결하려면 코드를 풀어주면 된다. 순차적으로 todayCoupon = await Day.findOne().sort({ _id: -1 }); // 먼저 sort시켜서 하나를 찾고 if (todayCoupon._doc.kakao
-
[ NodeJS ] express에서 swagger로 API 명세서 만들기Topic/Node.js | server 2023. 2. 18. 15:59
[ NodeJS ] express에서 swagger로 API 명세서 만들기 포스트맨으로 API 명세서로 활용하고 있었는데 API 서버 정보가 포스트맨 서버에 저장되는 문제가 우려돼 swagger로 자체 API 서버에 연결을 해서 해결을 해보려고 한다. npm i swagger-jsdoc swagger-ui-express —save -dev swagger-jsdoc: jsdoc 주석으로 api 문서를 표현하는 용도 swagger-ui-express: swagger와 express 연결하는 용도 project/swagger/swagger.js const swaggerUi = require("swagger-ui-express") const swaggereJsdoc = require("swagger-jsdoc"..
-
[ MongoDB ] Document에서 중첩 객체의 속성을 제거하는 방법(객체 내 객체)Topic/Database 2023. 2. 11. 19:07
mongo db document data { "_id": ObjectId("5589044a7019e802d3e9dbc5"), "sessionId": LUUID("f49d4280-ced0-9246-a3c9-a63e68e1ed45"), "teamId": LUUID("6ef7d1a8-f842-a54c-bd8c-daf6481f9cfc"), "variableId": LUUID("59d1b512-eee2-6c4b-a5b5-dda546872f55"), "values": { "725400": 691.0000000000000000, "725760": 686.0000000000000000, "726120": 683.0000000000000000, "726480": 681.0000000000000000, "726840": ..
-
[ NodeJS] moment-timezone을 이용해 로컬과 EC2 서버 시간 동기화Topic/Node.js | server 2023. 2. 4. 18:29
본인의 컴퓨터가 아닌 서버 컴퓨터 작업을 하시는 경우 서버가 한국에 위치하지 않아서 시간이 다르게 출력되는 경우가 발생한다. 이럴 때 필요한 것이 moment-timezone 모듈입니다. moment 모듈과 moment-timezone 모듈을 설치 후, 선언한 moment의 타임존을 원하는 지역으로 설정하면 로컬 서버와 EC2 서버 시간을 동기화시킬 수 있다. // 최상단 app.js npm install --save moment npm install --save moment-timezone var moment = require('moment'); require('moment-timezone'); moment.tz.setDefault("Asia/Seoul");
-
[ NodeJS ] req에서 클라이언트 ip 추출하는 방법Topic/Node.js | server 2023. 1. 28. 19:29
node js / example.controller.js 일부 로직 let clientIp = req.headers['x-forwarded-for'] || req.connection.remoteAddress; if (clientIp.substr(0, 2) === '::') { clientIp = clientIp.substr(2); } 이렇게 clientIp를 정해주고 substr로 정리하면 clientIp = “999.999.999.999” 요청한 클라이언트의 ip를 받아와서 활용할 수 있다.
-
[ Redis ] 레디스 설치 및 실행 방법 (Mac | OSX)Topic/Node.js | server 2023. 1. 20. 12:16
레디스(Redis) 설치 및 실행 방법 셀러리(Celery)의 메시지 브로커인 레디스를 설치하고, 정상적으로 작동하는지 확인한 다음, 실행시키는 방법에 대해 알아보겠습니다. 레디스의 설치는 홈브루(Homebew)를 이용해 설치해야 하기 때문에, 레디스 설치에 앞서 먼저 홈브루를 설치해주겠습니다. 홈브루(Homebrew) 설치 방법 먼저, 설치를 위해 터미널 창을 열겠습니다. 그리고 홈브루 메인 홈페이지에 나와있는 대로 명령어를 복사 붙여 넣기 합니다. 홈브루-공식홈페이지-설치 명령어 홈브루 공식 홈페이지 주소: https://brew.sh/ 홈브루로 레디스 설치 맥의 터미널(terminal)을 열고 다음 명령어를 입력해서 레디스를 설치해줍니다. cmd: brew install redis 레디스 실행 레디..