JaveScript/ExpressJS

// AS-IS const dailyCalorieRepository = AppDataSource.getRepository(DailyCalorie); await transactionRunner(async (queryRunner) => { const bmiRepo = dailyCalorieRepository.create({ carbohydrate: carbohydrate, protein: protein, lipid: lipid, calorie: calorie, bmiId: foundBodyMassIndex.id, foods: foods, }); await queryRunner.manager.save(bmiRepo); }); //TO-BE await transactionRunner(async (queryRun..
문제 docker-compose로 로컬에서 한번에 띄우고 있는데 위같은 에러가 떴다. 서버가 띄워졌는데, app(express.js 로 이루어짐) 서버가 띄워지는데까지 너무 오래걸려서 redis 서버가 기다리다가 connection timeout을 내뱉은 것이다. 해결방법 1 import * as redis from 'redis'; const redisClient = redis.createClient({ legacyMode: true, username: selectedConfig.username, password: selectedConfig.password, socket: { host: selectedConfig.host, port: selectedConfig.port, connectTimeout: 50..
elasticsearch - kibana 연동해 apm tool로 사용하는 방법을 기록하고자 한다. 우선 첫번째로 elasticsearch를 local에서 사용하는 방법을 정리하고자 한다. 참고로 나의 아키텍쳐는 mac m1 arm64이다. 1. elasticsearch 설치 & 기본세팅 https://www.elastic.co/kr/downloads/past-releases Past Releases of Elastic Stack Software Looking for a past release of Elasticsearch, Logstash, Kibana, es-hadoop, Shield, Marvel, or our language clients? You're in the right place.... w..
코드를 작성한 것들 중에 async/await을 남발해서 동기적으로 작동하게 되어 코드가 비효율적으로 동작한다는 것을 알게되었다. 그래서 리팩토링 하고자 한다. 1. 기존코드 export const dailyCalorieService = async ({ foods, userId }: IUserDailyCalorieService) => { const userRepository = AppDataSource.getRepository(User); const foundUser = await userRepository.findOne({ where: { id: userId } }); const bodyMassIndexRepository = AppDataSource.getRepository(BodyMassIndex);..
0. 기존코드 // regex.ts export const registerRegexesOfType = { email: { regexes: [/^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}$/], msg: '이메일의 형식에 맞게 입력해주세요.', }, password: { regexes: [/^(((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]))|((?=.*\d)(?=.*[a-z]))|((?=.*\d)(?=.*[A-Z]))).{6,15}$/], msg: '비밀번호는 6자 이상 15자 이하의 영문+숫자이어야 합니다.', }, phone: { regexes: [/^01\d\d{3,4}\d{4}$/], msg:..
0. 기존코드 export const bmiTypeCalculation = (height: number, weight: number): string => { const currentBMI = weight / ((height / 100) * (height / 100)); let bmiType: string; if (currentBMI = 15 && currentBMI = 20 && currentBMI < 24.99) { bmiType = 'normal'; } else { bmiType = 'fat'; } return..
1. Refresh Token을 저장하는 이유 Access Token은 Rest API로 개발할 경우, FE 개발자가 관리하기 때문에 BE 개발자가 따로 관리할 필요가 없다. 다만, Refresh Token의 경우 FE 개발자에게 보내지 않기 때문에 BE 개발자가 서버의 stroage에 따로 저장해서 이후 검증에 활용해야 한다. Refresh Token을 저장해서 관리한다는 것은 추가적인 I/O 작업이 필요하다는 의미이다. 따라서 I/O 작업이 필요없는 빠른 인증 처리를 장점으로 내세우는 JWT의 스펙과 상반되서 고민거리가 되곤 한다. Refresh Token은 탈취되어서는 곤란하므로 클라이언트는 보안이 유지되는 공간에 이를 저장해두어야 한다. Refresh Token은 서버에서 따로 저장을 하고 강제로..
1편 설정하기 및 입력값 넣기 2편 출력된 코드 parsing하기 2편은 chatgpt에서 응답해준 response를 가지고 parse를 해볼까 한다. 나는 응답값을 받고 -> parse해서 원하는 값만 뽑은다음 -> DB에 저장하는 과정을 거칠것이다. 1. 응답값 확인 우선 위처럼 객체 안에 role, content라는 키로 받았다. 그럼 나는 이제 저기서 탄수화물 30g, 단백질 15g 이런 값들을 가져다가 써야한다. 2. parse 하기 export interface NutritionInfo { carbohydrate: string; protein: string; lipid: string; calorie: string; } export const parseGPTSentence = async (ope..
알면 알 수록 재밌다!
'JaveScript/ExpressJS' 카테고리의 글 목록