반응형
전체 글

전체 글

    생성한 Custom validation으로 에러메시지 출력하기

    바로 직전 https://wedul.tistory.com/562?category=595982 에서 Custom validation을 만들어서 입력된 값에 validation을 체크하는 방법을 알아봤다.그럼 이 validation체크를 통해서 front에 상황에 맞는 에러를 보내줄 수 있도록 조치를 취해보자.우선 @valid 처리를 했었던 컨트롤러에서 에러 메시지를 수집해야한다. 1. ControllerSpring에서 Validation 작업을 진행할 시 validation에 문제가 발생하면 에러 내용을 묶어서 BindingResult로 처리할 수 있도록 제공해준다. 이를 사용하기 위해서 parameter로 BindingResult값을 추가해준다.1234567891011121314/** * 회원가입 * *..

    2018년을 마무리하고 2019년 시작하는 순간

    2018년이 마무리되는 시점이 오니 회사에서 다이어리와 캘린더 세트를 제공했다. 이전 직장에서도 이와 비슷한 상품들을 많이 받았어서 크게 기대감은 없었지만 그래도 박스도 세련되고 다이어리도 고급져서 좋았다. 내가 좋아하는 딱딱한 디자인에 커버 다이어리 두개와 펜 그리고 달력이 있었다.다이어리는 마음에 든다. 2018년에 회사를 옮기고 생각하고 기대했던 부분과는 조금 다른 부분이 많아 아쉽다.그래도 나름대로 새로운 프로젝트도 경험을 계속하고 있고 책임감도 완성도도 높아지는 것 같아서 만족스러운 부분도 있다.내가 마음에 든 다이어리와 펜을 빼고 나머지는 책장에 꼽아두었다. 2019년이 시작되기 바로전인 지금 다이어리를 받으면서 여러 생각이 들었다.너무 많은 생각을 앞서가며 걱정하니 머리만 아팠다. 크게 생각..

    Custom Validation 만들어서 추가하기

    Spring에서 @NotBlank, @Email등 여러 템플릿에 맞게 Validation을 넣을 수 있다.하지만 추가적으로 패스워드 규칙과 같이 별도 체크할 validator가 필요할 때 만들어서 사용해야 하는데 만들어서 지정해보는 작업을 해보자. 1. Controller요청을 받을 DTO앞에 @Valid 어노테이션을 추가해야한다.1234567891011/** * 회원가입 * * @param reqDto * @return * @throws Exception */@RequestMapping("/join")public ResponseEntity join(@Valid UserDto reqDto) throws Exception { return ResponseEntity.ok(userService.insertUs..

    로지텍 mx master 2s 잠실 롯데월드 타워 하이마트에서 구매 후기

    회사에서 사용중인 매직 마우스2가 너무 높이가 낮아서 마우스가 하나 필요했다. 집에서 사용중인 로지텍 마우스가 있지만 그건 집에서 사용해야 하니 한 사기 위해서 하이마트로 향했다.로지텍 마우스중 내 눈에 들어온건 mx master 2s와 mx anywhere 2s 인데 anywhere는 너무 높이가 낮았다. 그렇지만 가격은 mx master 2s가 너무 비쌌다. 129,000원 ㅎㄷㄷ 너무 비싸서 마다 하려 했지만 요새 야근이 많이 손목도 아프고 야근 수당이 나오니 야근수당으로 산다고 생각하고 구매했다. 제품박스는 되게 컸다.앞에 뚜껑을 열면 자석으로 붙어있고 제품 상세를 확인 할 수 있다.아주 심플하다 ㅋㅋ 유니파잉 수신기와 마우스 그리고 충전 케이블이 있다. 이 마우스는 기존에 사용중이던 마우스들과 ..

    동대문에서 쉑쉑버거 방문 리뷰

    여자친구가 동대문에서 결혼 사진때 필요한 악세서리를 구매하러 가자고 해서 토요일 아침 방문했다. 동대문 5층에서 악세서리를 구경하고 동네로 그냥 돌아가기가 아쉬워 밥을먹고 가기로 했다. 마땅히 동대문에서 먹을게 없어서 유명한 쉑쉑버거를 먹기로 했다. 사람은 초창기 오픈때보다 현저히 줄어 주말 점심시간인데도 그냥 줄 없이 앉아먹었다. 일반 버거와 훈제햄이 포함된 메뉴를 먹었다. ​ 생각보다 고기냄새도 심하고 엄청 느끼하다. 여자친구가 안먹어서 두개다 거의 내가 먹었다. ​​ 가격 자체도 너무 비싸서 콜라랑 버거 감튀 쉐이크 시키니 3만원 나왔다 ㅋㅋㅋ 차라리 밥집 갈걸 ㅠㅠ 다시는 안간다. 바닐라 쉐이크를 먹었는데 쉐이크도 느끼했다.

    inteliij 사용 시 related gradle configuration 설정을 찾지 못할 경우 해결방법

    Inteliij로 프로젝트를 정상적으로 작업하고 있었는데 어느날 application.yml 설정을 읽지 못해서 오류가 막 발생했다. 그래서 인텔리제이 오류 내용에서 찾아보던 중 다음과 같은 오류 내용을 볼 수 있었다.Unable to make the module: related gradle configuration was not found. Please, re-import the Gradle project and try again 그래서 무엇인고 하니 gradle 설정을 찾지 못한다는 이슈인 것 같아서 gradle 설정을 새로고침 해줬다.방법은 Gradle Task 관련 view에서 새로고침 버튼만 눌러주면 된다. ## 만약 view가 보이지 않는다면 여기 메뉴에서 찾아서 설정할 수 있다.

    sequelize에서 상황에 따라 조인 테이블을 변경하는 방법 - alias

    sequelize를 사용하다 보면 하나의 필드를 어떤 상황에서는 User테이블과 조인하고 다른 상황에서는 Dept 테이블과 조인을 하고 싶을 때가 있다.예를 들면 만약 로그를 기록 한다 하였을 때 모든 행위마다 로그를 기록할 수는 없기때문에 로그 테이블에 필드에 type을 나누고 발생한 object의 index만을 기록해서 진행하고 싶을 때 그럴 수있다. 그럴경우 targetIndex의 경우 동작 타입에 따라 User테이블과 조인할 수도 있고 Dept 테이블과 조인하는 등 유동적인 조치가 필요하다. 우선 Model을 define 하는 부분을 확인해보자.12345678910111213141516const Pub = Sequelize.define('pub', { name: { type: Sequelize.S..

    sequelize에서 조인 시 left join이 되지 않을 때 처리하는 방법

    sequelize에서 조인을 할때는 include를 사용해서 다음과 같이 한다. 123456await This.User.findOne({ attributes: ['id', ['name', 'userName']], include: [ { model: this.Dept} ]});Colored by Color Scriptercs물론 기존에 Model을 define할 때 연관관계를 설정을 해놓은 상태여야 하고 이렇게 할 경우에 나는 left join이 아니라 inner join으로 다음과 같이 되었다. SELECT id, name as userName FROM User u inner join Dept d on u.userId = d.userId;그래서 검색해서 알아보다보니 required 옵션을 부여하게 되면 ..

    sequelize에서 alias 사용하여 검색하는 방법

    sequelize에서 검색을 할 때 alias를 줘서 검색하는 방법은 다음과 같다. 생각보다 간단하다. 123await This.User.findOne({ attributes: ['id', ['name', 'userName']] //id, first AS firstName});Colored by Color Scriptercs

    sequelize 사용시 테이블 이름 변동없이 고정 Alias 사용방법

    sequelize는 마찬가지로 ORM을 사용하다보니 직접적으로 쿼리를 사용하는 것보다 정확하게 알지못하면 역시 개발속도도 늦어지고 문제가 많아지는 단점이 있다. 이번에는 sequelize를 사용하는데 조인할 때 테이블 이름이 갑자기 User에서 Users로 바뀌는 이슈가 발생했다. 이 이슈를 해결하기 위해서 sequelize Document를 검색했고 거기서 freeTableName 옵션을 발견했다.1234567891011121314151617181920212223242526const Bar = sequelize.define('bar', { /* bla */ }, { // don't add the timestamp attributes (updatedAt, createdAt) timestamps: fals..

반응형