전체 글 157

[NodeJS] Error : Cannot overwrite users model once compiled

이미 정의된 모델이 있는 상태에서 다시 또 모델을 정의하려는 경우 발생하는 에러다. 처음 이 에러 문구를 보고 내 로직상에서 이 상황 자체가 좀 이해가 안 됐었는 데 먼저 해결 방법부터 말하면 import mongoose from "mongoose"; const { Schema } = mongoose; const userSchema = new Schema({ email: { type: String, required: true, unique: true, }, password: { type: String, required: true, }, name: { type: String, required: true, }, nickName: { type: String, required: true, }, image: St..

Node.js 2022.06.24

[JS] for문과 파이프라인 처리 속도 테스트

리팩터링 2판을 읽다 궁금해서 해보고 싶은 것들이 있었다. 나중에 해봐야지 해봐야지 하다가 오늘 드디어 해봤고... 이 글이 도움이 될지.... 다른 사람들이 볼지... 는 모르겠지만, 혹시 나처럼 궁금한 사람들도 있을 수도 있지 않을까? 하는 생각으로 블로그에 작성하기로 했다. 확인해보고 싶었던 부분 1. 반복문을 분리해서 두 번 실행하는 방식으로 로직을 나눠도 성능에 큰 영향은 없다. 2. 반복문을 파이프라인 방식으로 변경하기 1번에서 궁금한건 그냥 진짜 한 번에 하는 거랑 분리해서 두 번 하는 거랑 큰 차이가 없나? 이 정도였고, 2번이 궁금한건 파이프라인 방식으로 filter와 map을 이어 붙이는 방식과 for문 방식의 처리 속도 차이를 직접 확인해보고 싶었다. 궁금한 건 또 직접 해서 눈으로 ..

JavaScript 2022.06.09

[ElasticSearch] dynamic strict 옵션

https://minu0807.tistory.com/106 [ElasticSearch]index 생성시 DynamicTemplate 사용 일반적으로 인덱스를 생성할 때 맵핑 정보를 지정하고 사용하다 보면, 불편한 점이 있다. 이런 식으로 인덱스가 생성되었다고 할 때, 저기에 입력된 4개의 맵핑 정보를 제외하고 실수로 다른 정 minu0807.tistory.com 이 글에서 잠깐 언급했던 옵션이다. 인덱스를 만들면서 맵핑 정보를 지정할 때 저 옵션을 넣고, 인덱스를 생성한 다음에 데이터를 넣을 때, 없는 맵핑 정보가 포함된 데이터가 들어오면 에러가 발생한다. displayName: 'BadRequest', path: '/user_test2/_doc', query: {}, body: { error: { ro..

ElasticSearch 2022.05.15

[Vue3] quasar input TextField 유효성 검사하기

지난번 글에서 Vite+Vue3 프로젝트에 jwt 로그인 기능 구현에 관한 글을 작성했었다. 디자인 프레임워크로 퀘이사를 사용해서 만들었었는데 기능을 구현하고 나중에 다시 봐보니 로그임 폼에 대한 유효성 검사 기능이 없어서 퀘이사에서 제공하는 유효성 검사 기능에 대해 한번 알아봤다. 유효성 기능 구현 자체는 Vuetify와 유사해서 크게 어려운 부분은 없었다. 1. form에 ref 추가 먼저 해야할 부분은 ref 추가이다. 공식 홈페이지에서 유효성 검사를 할 각 q-input에다가 ref를 추가해서 따로따로 하는 예시만 있어서 vuetify 처럼 한 번에 하는 건 안 되는 건가? 해서 해봤는데 잘 된다. 내가 작성한 방법은 이렇다. q-form에다가 ref값을 지정했고, 각 q-input에다가는 검증 ..

VueJS 2022.05.08

[VueJS] Vite+Vue3 JWT기능 구현하기

가장 기본적인 기능이면서 구현하기 까다로운 로그인 기능... vue2 기반의 vue-cli와 nuxt도 jwt 기능을 활용한 로그인 기능에 대한 글을 작성했었는데 솔직히 너무 초반에 공부하면서 만들어본 거라 내용 자체가 마음에 들지 않았다. (글을 다시 쓰고 싶지만 귀찮아서 못하고있다.) 최근 vite+vue3로 vue3에 대해 조금씩 접해보다 jwt를 이용한 로그인 기능을 구현해보자 해서 만들어봤다. 토큰을 발급, 검증하는 백엔드 부분은 다루지 않고 웹단만 작성했습니다. 우선 프로젝트에 axios, vue-router, vuex가 모두 세팅되었다는 가정하에 시작합니다. 그리고 디자인 프레임워크로 퀘이사를 사용했습니다. 추가적으로 설치가 필요한 건 vue3-cookies 이걸 설치해야 합니다. npm i..

VueJS/Vite 2022.04.25

[VueJS] nuxt-socket-io 모듈 사용해보기

웹소켓 관련해서 직접 제대로 해본 적이 없어서 ws를 이용해 express와 nuxt에 만들어서 해본 뒤 socket.io도 해봤었다. socket.io가 ws에 비해 제공되는 기능이 많다고 해서 해봤고, nuxt에서는 nuxt-socket-io라는 모듈을 이용해 socket.io를 사용할 수 있길래 사용해봤다. 테스트는 vue2 기반의 nuxt 프로젝트에서 진행했습니다. 우선 socket.io를 열어둔 서버단 소스는 소켓 쪽 소스만..(넷 상에 참고할 소스들이 많기에...) const SocketIO = require('socket.io'); module.exports = (server) => { const io = SocketIO(server, { path: '/socket.io', cors: { o..

VueJS/Nuxt 2022.04.22

[VueJS] Vue3 CompositionAPI로 자식 컴포넌트 접근

vue3 공부 중 template refs를 보다 보니 vue2 컴포넌트에서 자식 컴포넌트 안의 methods를 실행시키는 걸 사용했던 게 생각나서 vue3의 compositon API에서는 어떻게 하는지 궁금해서 찾아봤었다. 테스트는 vite+vue3에 디자인프레임워크로 퀘이사를 사용했습니다. vue2에서 사용하던 optionsAPI 방식에서는 this.$refs.ref이름 형식으로 자식 컴포넌트에 접근이 가능했다. vue3에서 제공하는 compositionAPI 방식은 this를 사용할 수 없고, 컴포넌트에 입력된 ref와 이름이 같은 변수를 만들고 ref(null)을 주면 된다. 간단하게 보면 아래와 같다. ... //vue2 optionsAPI 의 접근 방법 this.$refs.child.~~ /..

VueJS 2022.04.03

[NodeJS] express+mysql2+transaction 데이터 처리

맥북에 mysql 5.7 설치 후 진행했습니다. connection pool 생성 후 트랜잭션을 이용해 정상 처리시 commit을 에러시 rollback을.. 커넥션풀 생성 const mysql = require('mysql2/promise'); const { MYSQL_HOST, MYSQL_USER, MYSQL_PW, MYSQL_DB, } = process.env; module.exports = mysql.createPool({ host: MYSQL_HOST, user: MYSQL_USER, password: MYSQL_PW, database: MYSQL_DB, connectTimeout: 5000, connectionLimit: 30 //default 10 }) 먼저 데이터 insert router...

Node.js 2022.03.15

[NodeJS] express에서 mysql2 사용하기

이전 글(https://minu0807.tistory.com/125)에서 mysql npm을 사용해봤고, async/await을 사용하기 위해선 mysql2를 설치해야 한다고 해서 설치해봤다. 콜백 방식은 보기도 싫고, 작성하는 나도 싫기 때문에... 기존꺼에 작성한 건 바로 수정해봤다. 우선은 mysql2 설치 npm install mysql2 이후 지난번에 작성했던 mysql.js을 수정 const mysql = require('mysql2/promise'); const { MYSQL_HOST, MYSQL_USER, MYSQL_PW, MYSQL_DB, } = process.env; module.exports = mysql.createPool({ host: MYSQL_HOST, user: MYSQL_U..

Node.js 2022.03.10

[NodeJS] express에서 mysql 사용하기

뭐든 처음 베이스 세팅 과정이 어려운 것 같다. 회사에서 mysql을 버리고 elasticsearch를 사용한 지 몇 년 된 것 같은데 엘라스틱 쿼리에 익숙해지면서 mysql을 완전 잊어버린 것 같고, node로 mysql을 다뤄본 적이 없어 한 번 해보고 싶어서 해봤다. mysql은 맥북에 셋팅 했다. 참고 블로그 : https://twinparadox.tistory.com/619, https://tlo-developer.tistory.com/293) 그리고 connection pool 방식으로 진행하기로 했다. 먼저 mysql.js 라는 모듈용 파일을 생성 const mysql = require('mysql'); const { MYSQL_HOST, MYSQL_USER, MYSQL_PW, MYSQL_D..

Node.js 2022.03.09