Node.js 6

디스코드 봇 만들기 - 사용자가 음성 채널에 들어갔을때

디스코드 봇을 심심해서 만드는데사용자가 음성채널에 들어가는 이벤트에 대해서 처리 하고 싶었다.  discord.js를 이요해서 구현 중이고버전은 v 14.16.3 버전을 기준이다. 14버전부터 많은게 바뀌어서 자료가 별로 없는것 같다.. 그래서 다 영어로 검색해야 해서 슬프다... 기본 설정은 다 해뒀고음성 채널에  참가했을때 참가한 시간을 간단하게 시간을 측정해주는 건데 const { Events } = require("discord.js");module.exports = { name: Events.VoiceStateUpdate, once: false, async execute(oldState, newState) { // 유저가 음성 채널에 들어갔을 때 if (..

Node.js 2024.11.14

Node.JS base64로 인코딩한 이미지 incorrect 오류

db에서 받아온 blob데이터를 base64로 인코딩 하였는데 이미지가 보이지 않았다. 다른 사이트의 base64 이미지 뷰어에 base64를 넣었는데 사이트는: https://ko.rakko.tools/tools/71/ 를 사용하였다. Base64- 이미지 디코더 / 컨버터 | RAKKOTOOLS🔧 Base64 문자열을 이미지로 디코딩 ko.rakko.tools 위와 같이 "데이터 수집에 실패했습니다. 입력 내용에 오류가 없는지 확인하십시오." 라고 떴다. 여러 스택오버플로우를 돌아다니다가 겨우 해결하였다. NodeJS 버전은 18버전을 사용하였다. 기존에는 rows = rows.map(row => { if (row.IMG_DATA) { // Buffer에 데이터를 바이너리로 로드하고 base64로 인..

Node.js 2023.11.07

Node js cookie 설정시 option sameSite is invalid 오류

유저 로그인 요청이 오면 유저의 ID와 비밀번호를 확인후 jwt 토큰을 생성하여 res.cookie로 사용자의 쿠키에 저장해주려 하였다. 하지만 클라우드 서버 주소로 접속하여 요청을 하면 쿠키가 잘 생성 되었지만 로컬에서 개발중인 localhost에서 빌드된 React에서 요청을 하면 쿠키가 생성되지 않았다. CORS오류가 의심되었지만 기존에 app.js에 CORS오류 관련 기본 설정을 해두어서 알아보던중 cookie옵션으로 sameSite = 'None'을 주어야 한다는 것을 알게 되었다. 다른 Origin에서도 쿠키를 설정할 수 있도록 하는 것이다. None 말고도 Strict, Lax가 있다. 기본적으로 Lax가 기본값이다. 따라서 기존의 res.cookie('accessToken', accessT..

Node.js 2023.10.24

Node js Connection Pool

현재 조명 쇼핑몰 만들기 토이 프로젝트를 진행하면서 서버를 띄워 두었었는데 많은 db요청으로 자꾸 서버가 뻗었었다... 이유를 찾아보니 기존에 npm mysql의 createConnection으로 connection을 계속 만들어 내니 과부하가 온것이다 그러다 Connection Pool을 알게 되었다. Connection Pool은 내가 설정한 수의 커넥션을 pool에 저장하여 사용자의 요청이 발생하면 연결을 해주고 연결종료시 release()해주어 다시 connection에 저장해주는 것이다. 이렇게 하면 pool에서 생성한 connection으로 수행하기 때문에 만들어지는 connection이 적어지고 재사용 하면서 여러 요청이 동시에 발생해도 커넥션을 효율적으로 관리 할 수 있습니다. 또한 기존에..

Node.js 2023.10.18

Promise { <pending> } 이 뜬다.

상품을 검색해서 가져오는 get요청의 restful api를 만들려고 하였다. 먼저 상품 관련한 라우터를 관리해줄 파일을 만들어주고 product.js const express = require('express'); const router = express.Router(); const ctrl = require('./product.ctrl'); router.post('/detailInfo', ctrl.process.detailInfo); router.post('/setProd', ctrl.process.saveProduct); // router.patch('/edit', ctrl.process.edit); router.get('/search', ctrl.process.search); module.expo..

Node.js 2023.10.10

JWT(json web token)으로 로그인시 토큰 발행 해주기(access, refresh)

토큰이란 클라이언트에서 서버로 무언가 요청을 할때 인가된 사용자인지 확인을 해야한다. 하지만 확인할때마다 로그인을 실행 할 수 없는데 그 방법으로 대표적인것이 세션(session)과 쿠키 - 토큰(token)방식이 있다. 세션방식은 사용자가 로그인을 하면 session정보를 저장해 두고 있다가 뭔가를 요청할때마다 사용자의 세션과 저장해둔 세션과 비교를 하는 것이다. 하지만 이러한 방식은 stateful해서 만든다면 정말 좋겠지만 사용자가 많아질 수록 저장,제어해야하는 양도 늘어나고 서버의 부하가 늘어나게 된다. 토큰 방식은 사용자가 로그인을 하면 클라이언트의 쿠키에 정보를 암호화 해서 넣어두고 클라이언트가 요청을 할때마다 헤더의 쿠키에 토큰값을 담아서 보내면 서버가 해당정보를 읽고 인가된 사용자인것을 확..

Node.js 2023.09.24
반응형