이야기를 나눠요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
GraphQL 완전정복 (키오스크를 만들며 배우는 풀스택 과정) - [2024 부분 리뉴얼]
군대 사지방에서 환경 구축
군대 사지방에서 repl에서 공부 할려고 하는데 repl 환경에서도 환경구축이 가능한가요?
-
Do it! Node.js 프로그래밍 입문
update 함수 문의
컨트롤러에서 updateContact 함수실행시 findByIdAndUpdate 함수를 사용하지 않고 save 함수를 사용한 이유가 있을까요?
-
Node.js 노드 빠르게 훑어보기: 서버부터 DB까지
디테일 메인페이지에서 상세페이지로 가는 링크 부분
main.html{% for writing in list %} <tr> <td><a href="/detail/{{ writing._id }}">{{ writing.title }}</a></td> <td>{{ writing.contents }}</td> <td>{{ writing.date }}</td> </tr> {% endfor %}제목 링크 넣는 부분 강의에 빠져있어서 혹시나 하고 올립니다 {{ writing._id }}
-
탄탄한 백엔드 NestJS, 기초부터 심화까지
nestjs s3 파일업로드 진행중인데 Buffer속성이 없어요
nestjs s3 파일업로드 진행중인데 속성이 fieldname originalname encoding mimetype destination filename path size까지만 있고 buffer속성이 없네요... 어디갔죠 아무리 뒤져봐도 안나옵니다..
-
하루만에 배우는 express with AWS
[강의 추가] 건의
삭제된 글입니다
-
[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
힘이 듭니다
4장 보다가 코드리딩이 안되서 멘붕이 왔었습니다.6장에 이제 들어가는데 좀 더 잘되겠죠..? 힘을 주십시요 선생님
-
실전! Querydsl
Spring Boot 3 Querydsl 설정 공유 드립니다 + MongoDB
최근에 새로운 프로젝트 진행하면서 Spring Boot 3 버전을 사용하게 됐는데해당 프로젝트의 Gradle 설정을 구성하면서 다른 분들의 예제를 보면서 작성한 내용을 공유 드립니다. 아래의 내용은 VSCode에서 진행했습니다. 다른 IDE에서는 테스트해보지 않아 다르게 동작할 수도 있는 점 양해 부탁드립니다. 먼저 Gradle 설정은 다음과 같습니다.plugins { id "java" id "org.springframework.boot" version "3.0.6" id "io.spring.dependency-management" version "1.1.0" //querydsl 플러그인 추가하지 않음 } ... configurations { ... querydsl.extendsFrom compileClasspath //해당 부분은 그대로 유지 ... } repositories { mavenCentral() } dependencies { ... implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta" annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" implementation "com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0" ... } ...현재 예제에서는 Querydsl의 Gradle 플러그인인 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"를 사용하지 않습니다. 이전 버전에도 있었는지는 정확하게 모르겠지만 Spring Boot 3로 업데이트 되면서 jakarta 패키지를 사용하기 때문에 해당 패키지에 맞는 annotationProcessor를 추가하여 Gradle의 Querydsl 태스크를 대체합니다.(대표적으로 compileQuerydsl) 그리고 configurations 부분의 querydsl.extendsFrom compileClasspath 구문은 그대로 유지합니다. dependencies 부분에서는 Querydsl 관련 패키지 뒤에 :jakarta를 추가로 입력하고 2 개의 annotationProcessor을 추가해줬습니다. Spring Boot 3 초기에 지원되지 않았던 P6Spy의 경우 2월 10일에 1.9.0 버전으로 업데이트 되어 정상적으로 지원합니다. 그리고 기존에 김영한 님이 가이드 하셨던 코드인//querydsl 추가 시작 def querydslDir = "$buildDir/generated/querydsl" querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } compileQuerydsl { options.annotationProcessorPath = configurations.querydsl } //querydsl 추가 끝위 코드는 따로 작성하지 않습니다. Querydsl Gradle 플러그인을 통해 Qclass를 생성하는 compileQuerydsl 태스크를 별도로 실행할 필요 없이 프로젝트 빌드 진행 시 annotationProcessor에 의해 Qclass가 자동으로 생성됩니다.(여기서 프로젝트 빌드란 Gradle build 태스크가 아닌 Java workspace 빌드를 뜻함.)아래의 이미지와 같이 @Entity 파일이 수정될 때 수정한 내용이 즉시 Qclass에 반영되는 것을 확인할 수 있습니다.(좌측 Entity class, 우측 Qclass) 위 설정을 통해 생성되는 Qclass의 위치는 /bin/generated-sources/annotations/{프로젝트 패키지}/{Entity 클래스 패키지}입니다.(예제 프로젝트에서 Qclass의 위치, gitignore 처리되어 있어 회색으로 표시 됨) 만약 annotationProcessor를 추가하고 Querydsl 설정을 같이 추가했다면 Qclass가 중복된다는 오류가 발생하여 프로젝트 빌드가 진행되지 않으니 주의 바랍니다. 해당 소스는 다음 링크에서 확인해보실 수 있습니다.404-nut-pound/spring-jpa-querydsl-template (github.com) 그리고 별도로 MongoDB+Querydsl 설정도 공유해 드립니다.404-nut-pound/spring-mongodb-querydsl-template (github.com)MongoDB는 Gradle 패키지 설정 시 약간 달라지고 @Entity 어노테이션은 동일하게 사용합니다.그리고 Querydsl MongoDB 패키지는 JPAQueryFactory를 지원하지 않고 Morphia 패키지를 사용해서 MorphiaQuery라는 객체를 사용하는데공식 가이드를 봐도 해당 객체를 초기화하는 방법을 알 수 없어서 Repository 인터페이스에 QuerydslPredicateExecutor를 상속하여 사용하는 식으로 구성했습니다.
-
mongoDB 기초부터 실무까지(feat. Node.js)
Unique Index 강의 내용 정보입니다.
await mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true })1:08 부분에 컴파일 후 Warning 내용으로 createIndexes를 사용하는 것이 좋다는 내용이 올라와서 해당 설정을 잡아 주셨는데요. mongoose 6 버전 이후부터는 해당 설정을 적용을 하면 오히려 Error이 발생하고 있습니다.MongoParseError: option usecreateindex is not supported위 Error이 발생하고 있네요. 검색을 해보니 Mongoose 6.0 이상부터는 useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false위 4가지 설정과 관련하여 위와 같이 설정 값을 default로 잡아두고 있기에 해당 설정을 지워하지 않는다고 하네요. https://velog.io/@lee951109/MongoDB-MongoParseError-options-usecreateindex-usefindandmodify-are-not-supported 참고 사항으로 추가해주시면 좋을 것 같습니다 ㅎㅎ
-
탄탄한 백엔드 NestJS, 기초부터 심화까지
cron, trigger
안녕하세요 강의 수강 후 팀원들과 웹 서비스 개발에서 백엔드를 맡고 있는 수강생입니다. 저희 서비스에서 db에 생성된 데이터가 생성될 때 지정한 날짜와 시간을 기준으로 24시간 후에 해당 데이터의 특정 컬럼 값의 상태가 변하는 제공되는 기능을 구현 중에 질문이 생겼습니다.해당 기능에서 cron 스케쥴러를 이용하는 것과 db단에서 trigger를 사용하여 처리하는 것 중 trigger를 사용할까 싶은데 trigger 사용시 db 복잡도가 너무 증가하지 않을까 싶어서 질문 드립니다. 참고로 db는 postgresql을 사용하고 typeorm 사용 중 입니다!
-
탄탄한 백엔드 NestJS, 기초부터 심화까지
중복코드 제거 공유
let error = exception.getResponse(); if (typeof error === 'string') { error = { error }; } response.status(status).json({ statusCode: status, timestamp: new Date().toISOString(), path: request.url, ...error, });문법공부는 따로 안해서, 더 좋은 방법이 있겠지만..
-
Express 튜토리얼 : 웹 서비스를 위한 핵심 API
[해결법] MongoClient.connect()가 콜백을 실행하지 않고 무한 대기하는 현상
초심자 입장에서 해결하기 어려웠던 문제가 있어 공유드립니다.선생님 혹은 잘 아시는 분들이 내용이 맞는지 검증해주시기를 부탁드립니다. 문제npm i mongodb로 설치하는 몽고디비 드라이버 버전이 5.0인 경우 connect()에 넣은 콜백함수가 실행되지 않는 현상이 있습니다. 이는 변경된 스펙때문인 것으로 보입니다.사진 좌측은 강의에 사용된 4.3이고, 우측은 제가 사용한 5.0입니다. 5.0에는 콜백을 인수로 받는 함수원형이 기재되어있지 않습니다. 해결해결 방법 예시 두 가지를 공유드립니다.아래와 같이 then-catch 합니다. (제가 이렇게 했습니다.) MongoClient.connect(MongoURL) .then(database => { app.listen(port, () => { console.log(`Example app listening on port ${port}`); }); db = database.db('Express'); post = db.collection('posts'); }) .catch(err => { console.log(err); return; }) .finally(() => { console.log('끝'); }); 아래 가이드의 코드를 따라합니다.https://mongodb.github.io/node-mongodb-native/5.0/#connect-to-mongodb 감사합니다. 자세한 설명은 블로그에 달아두었습니다.https://velog.io/@yiwonjin/MongoClient.connect%EC%9D%98-callback%EC%9D%B4-%EC%8B%A4%ED%96%89%EB%90%98%EC%A7%80-%EC%95%8A%EB%8A%94-%ED%98%84%EC%83%81
-
파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)
몽고디비 서버 한국도 선택 가능합니다!
aws에서 한국 리전 런칭하면서 몽고디비도 같이 한국에 만들 수 있네요!!
-
mongoDB 기초부터 실무까지(feat. Node.js)
후속강좌
후속강좌 ( mongo db, mongoose 심화) 라던지 SQL 과 sequelize 강좌는 예정이 없으신가요? 백엔드 개발 준비중인데 도움이 많이 됐습니다.