inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

passport로 로그인하기에서 passport로그인 이라는게 무슨 말인가요??

해결됨

[리뉴얼] React로 NodeBird SNS 만들기

router.post('/login', (req, res, next) => { passport.authenticate('local', (err, user, info) => { // done에서 넣은값들이 순서대로 전달되는곳 if (err) { console.error(err); next(err); } if (info) { return res.status(401).send(info.reason); } })(req, res, next); // middleware 확장하는 express의 기법 // (req, res, next)를 붙히면 그냥 함수를 전달하는것과 똑같은 기능을 하게 된다. return req.login(user, async (loginErr) => { // 서비스 로그인이 다 끝나면 passport 로그인을 한번 더 하는데 에러발생시 핸들 if (loginErr) { console.error(loginErr); return next(loginErr); } return res.json(); }); }); return req.login(user, async (loginErr) => { 여기서 우리 서비스 로그인이 다 끝나면 passport 로그인을 한번 더 한다고 하셧는데 이게 무슨 의미 인가요?? 우리 서비스에서 로그인을 하면 끝 아닌가요?

  • react
  • redux
  • node.js
  • express
  • next.js
cksdn1013 댓글 1 좋아요 0 조회수 544

Graphql fetBoard 재질문

해결됨

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

import {Bigframe, ResultWrapper, UserBox, UserInfo, Boundary } from "@/styles/emotion"; import { gql,useQuery } from "@apollo/client" import { useRouter } from "next/router" import{useState} from 'react' const FETCH_PRODUCT = gql` query fetchBoard($boardId: ID!){ fetchBoard(boardId:$boardId){ writer title contents createdAt } } ` export default function BulletinBoardFetch() { const router = useRouter() const[writer,setWriter]=useState("") const[creatDt,setCreatDt]=useState("") const{data}=useQuery(FETCH_PRODUCT,{ variables:{ boardId: router.query.qqq } }) console.log(data?.fetchBoard?.createdAt) setCreatDt(data?.fetchBoard?.createdAt) setWriter(data?.fetchBoard?.writer) return( <div> <Bigframe> <div> banner1 </div> <div> banner2 </div> <ResultWrapper> <UserBox> <img src="../../../public/userpic.png" alt=""/> <UserInfo> {/* <Writer>{writer}</Writer> <CreateDate>{createDt}</CreateDate> */} </UserInfo> <img src="../../../public/clip.png" alt=""/> <img src="../../../public/location.png" alt=""/> <Boundary></Boundary> </UserBox> </ResultWrapper> </Bigframe> </div> ) } 너무 많이 루프했다고 뜹니다 ㅠㅠ

  • react
  • node.js
  • seo
  • graphql
  • next.js
웹서퍼 댓글 1 좋아요 0 조회수 288

graphql query가 안돼요

해결됨

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

import {Bigframe, ResultWrapper, UserBox, UserInfo, Boundary } from "@/styles/emotion"; import { gql,useQuery } from "@apollo/client" import { useRouter } from "next/router" import{useState} from 'react' const FETCH_PRODUCT = gql` query fetchBoard($boardId: ID!){ fetchBoard(boardId:$boardId){ writer title contents createdAt } } ` export default function BulletinBoardFetch() { const router = useRouter() const[writer,setWriter]=useState("") const[creatDt,setCreatDt]=useState("") console.log(router.query.qqq) const{data}=useQuery(FETCH_PRODUCT,{ variables:{ boardId: `${router.query.qqq}` } }) console.log(data) setCreatDt(data.fetchBoard.createdAt) setWriter(data.fetchBoard.writer) return( <div> <Bigframe> <div> banner1 </div> <div> banner2 </div> <ResultWrapper> <UserBox> <img src="../../../public/userpic.png" alt=""/> <UserInfo> <Writer>{writer}</Writer> <CreateDate>{createDt}</CreateDate> </UserInfo> <img src="../../../public/clip.png" alt=""/> <img src="../../../public/location.png" alt=""/> <Boundary></Boundary> </UserBox> </ResultWrapper> </Bigframe> </div> ) } 뭐가 문제인걸까요...ㅠㅠ

  • react
  • node.js
  • seo
  • graphql
  • next.js
웹서퍼 댓글 1 좋아요 0 조회수 550

노션페이지에 예전에 있었던 section 1,2,3이 없네요

해결됨

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

일부러 삭제하신 건가요? 오랜만에 복습하러 왔는데 안보이네요

  • react
  • node.js
  • seo
  • graphql
  • next.js
Jun 댓글 2 좋아요 0 조회수 664

Spring Boot 3.X distinct 관련

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 주문 조회 V3: 엔티티를 DTO로 변환 - 페치 조인 최적화 Spring Boot 3.2버전에서 실습 중에, distinct 옵션을 사용하지 않고도 distinct 옵션을 넣은 것처럼 Row가 2줄 출력됩니다. 이것저것 코드를 확인하다가 Spring Boot를 2.x 버전으로 내린 후에 다시 확인해보았는데, 그제서야 강의에 나오는 것처럼 중복 데이터 4개가 나옵니다. 혹시 이것 관련해서 jpa에서 업데이트가 된 것인지요..? 검색 능력이랑 문서 능력 찾아보는 능력이 딸려, 한참 찾아보다 여기에 질문합니다 ㅜㅜ 실례가 안된다면 이러한 내용을 어떻게 찾는지도 알게 될 수 있다면 좋을거 같습니다!

  • java
  • spring
  • spring-boot
  • jpa
shovel 댓글 1 좋아요 4 조회수 1927

ArrayList, LinkedList, HashMap 등 및 이들의 메소드들 add(), set() 등에 대해 깊이있게 알고싶습니다...ㅎ

해결됨

나도코딩의 자바 기본편 - 풀코스 (20시간)

안녕하세요, 나도코딩 선생님...ㅎ 어제 나도코딩 자바편에서 남은 나머지 강의인 Thread 부분과 섹션 10. 제네릭스 (Java Collections Framework)를 다 듣고 완강한 다음 복습 중에 궁금증이 생겨 이렇게 질문을 남깁니다. 나도코딩 파이썬 강의를 완강한 이후로 또 다른 강의를 다 끝내고 나니 기분이 매우 좋습니다 ㅎㅎ (1) 우선 add와 set과 관련된 질문입니다. Java documentation을 보면서 java.util.List에서 add는 object를 추가하는 것 외에도, add(int index, object e)를 통해 특정 위치(index)에 특정 객체(object)를 넣기도 가능 하고, set도 마찬가지로 set(int index, object e) 형태로 같은 역할을 수행 하는데, add와 set를 따로 나눈 것은 add는 단순하게 리스트 안에 객체를 넣는 것이 초점인 반면, set는 리스트 안에 들어있는 '기존 데이터들이 가진 순서 변경의 목적' 이라서 그런건가요? (2) 지금까지 제네릭스를 공부하고 제가 이해한 바로는 LinkedList 랑 ArrayList 두 가지 리스트 모두 데이터 순서를 가지고, ArrayList는 데이터를 쓰고 저장하는 것은 알고리즘 시간 복잡도상 O(n)이기 때문에 속도가 느리지만, 읽기(O(1))는 빠른 반면, LinkedList는 데이터를 읽는 속도(O(n))는 느리지만, 리스트 중간에 데이터를 쓰고 저장하는 것(O(1))은 빠르다면, 이 둘의 특성들을 어느 때 쓰는 것이 가장 적합한가요? 또한 ArrayList와 LinkedList를 각각 '메모가 많은 공책', 예전에 있었던 '포털 사이트 실시간 검색어 순위'로 비유해서 개념을 이해하는 것도 괜찮을까요? - 제 스스로 이해를 돕기위해 나름 저만의 비유를 적어봤습니다...ㅎ 메모가 많은 공책 (ArrayList) : 책 한 장안에 많은 메모들을 볼 수 있어서 읽기는 빠르지만, 메모를 쓰려면 최소 6-7장은 넘겨야 한다. 실시간 검색어 순위 (LinkedList) : 순위가 주기적으로 (주로 1시간 단위) 변해서 자료들을 빨리 반영하기는 힘들지만, 실시간 순위인 만큼 빠른 자료 수집 및 추가는 확실하다. (3) HashMap도 또한 일반적으로 어디에 가장 적합 한가요? 이를 테면 제가 원하는 특정 문자에, 특정 정수(Integer) 값을 할당하는 용도로 HashMap을 써도 괜찮을까요? 혹시 몰라 아래처럼 제 나름대로 코드를 적어봤습니다...ㅎ ... // 이미 import java.util.Map; 되어있음. HashMap<String, Integer> gameMoves = new HashMap<>(); gameMoves.put("R", 0); // gameMoves.remove("R"); 이렇게 키도 삭제 가능 gameMoves.put("D", 1); gameMoves.put("L", 2); gameMoves.put("U", 3); System.out.println(gameMoves.size()); // 4 그리고 위의 예시 처럼 remove("R");을 통해 키 값을 없애면 (HashMap gameMoves에 저장된 String), HashMap gameMoves의 value값은 그대로 살아있는가요? 아니면 null로 처리가 되나요? 스스로 공부하면서 얼핏 본 바로는 key값이 사라지더라도 map의 value는 계속해서 쓸 수 있다고 본거 같은데, 이 부분도 확실하게 제 스스로 짚고 넘어가고 싶습니다! 추가적으로 강의를 들으면서 제네릭스 전반적인 개념을 제 나름대로 그림도 그려가면서 이해를 해봤습니다...ㅎ 제대로 이해했는지 알고 싶어서요...ㅎ 앞으로도 강의 많이 찍어주세요!...ㅎ 항상 감사합니다!

  • java
  • 객체지향
  • 컬렉션프레임워크
  • arraylist
  • LinkedList
  • hashmap
  • 제네릭스
댓글 1 좋아요 0 조회수 717

타입에러 해결에 도움이 필요합니다.

미해결

[리뉴얼] React로 NodeBird SNS 만들기

필요한 정보를 넣어주고 회원가입 버튼을 누르면 saga 의 user.js 에서 signUp 에서 에러가 발생하는데 이유를 모르겠습니다.

  • react
  • redux
  • node.js
  • express
  • next.js
댓글 1 좋아요 0 조회수 393

조언 부탁드립니다.

해결됨

[리뉴얼] React로 NodeBird SNS 만들기

안녕하세요. 혼자서는 결론을 내리지 못해 더 많은 경험과 고민을 한 제로초님께 조언을 구하고 싶습니다. 제가 기존 코드에 Menu가 있었습니다. 그리고 이번에 타입스크립트로 마이그레이션 했는데 네이밍 컨벤션에 고민이 있습니다. 이 이름을 쓰는 곳은 총 4곳 입니다. menu - 데이터로 불러오는 menu Menu - 타입으로서 Menu Menu - 페이지(메뉴 상세 페이지) Menu - 메뉴 아이템(메뉴 리스트 안에 각각 뿌려지는 메뉴 아이템) 사실 타입이 없을 때는 아래 2개의 파스칼 케이스의 Menu가 이름으로 겹칠 일이 없었습니다. 그러다가 타입을 도입 했는데, 타입인 Menu 같은 경우 제로초님이 요즘은 앞에 헝가리안 표기법으로 타입인지 인터페이스인지를 표기 안하는 추세라고 하시기도 했고, 프로그래밍에서 가장 중요한게 데이터라 생각해서 그 데이터의 타입은 그대로 쓰는게 좋다고 생각했습니다. 페이지 같은 경우에는 파일 명과 반드시 같은 필요가 없다 해서 라우팅할때 menu.tsx를 쓰더라도 파일 내부에서는 MenuPage로 명명했습니다. 그리고 남은 컴포넌트가 문제인데 다른 강의를 봐도 MenuComponent 같은 이름 보단 다른 강의에서 List를 붙이시는거 보고 MenuItem으로 컴포넌트 명을 지으려고 하는데 괜찮을까요?? 감사합니다!!

  • react
  • redux
  • node.js
  • express
  • next.js
Milkyway 댓글 1 좋아요 0 조회수 343

수강기간 관련하여 질문 드립니다.

미해결

만들면서 배우는 프론트엔드 DO IT 코딩 (Next.js, Typescript)

안녕하세요 강사님! 수강을 완료하고 개인적으로 플젝을 진행하며 복습을 하고있습니다. 많은 도움이 되었고, 강의 내에 코드 짤 때의 깨알 꿀팁도 많아서 코드 짜는 실력이 많이 늘었습니다. 다시 한 번 감사합니다. 지금 강의를 다시 들으며 머릿속을 정리하고 싶은데 기간이 3주도 채 안남아있어서 혹시 연장이 가능할지 여쭤봅니다😥😥 감사합니다.

  • next.js
은선 댓글 1 좋아요 0 조회수 439

서버 터진건가요..

해결됨

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

http://practice.codebootcamp.co.kr/graphql 요청 보내면 502 에러 뜨네요ㅜㅜ 확인 한번만 해주시면 감사하겠습니다...

  • react
  • node.js
  • seo
  • graphql
  • next.js
kjy2647 댓글 1 좋아요 0 조회수 702

비회원 장바구니 구현 리뷰

해결됨

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

노션에 비회원 장바구니 구현 리뷰 코드 그대로 복붙해서 실행하면 에러400에 화면이 안뜹니다!

  • react
  • node.js
  • seo
  • graphql
  • next.js
호겸 댓글 1 좋아요 0 조회수 856

pgadmin4 질문입니다

미해결

따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)

현재 올려주신 pgadmin4 설정과 동일하게 값을 넣어도 Undable to connect to server localhost failed: 치명적오류: 사용자 "postgres"의 password인증을 실패했습니다 라는 에러가 떠서 register server에서 방법을 인터넷을 보고 제 ip주소도 넣어보고, pg_hba.conf에서 서버 확인하고 locahost, 127.0.0.1 두가지 모두 입력이 먹히지 않네요

  • react
  • node.js
  • postgresql
  • docker
  • typescript
  • 클론코딩
  • next.js
댓글 1 좋아요 0 조회수 354

생성메소드

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

생성메소드에 대해 잘 이해가 안가네요 어떨때 사용하게 되는건가요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
wxogud3377 댓글 1 좋아요 2 조회수 919

Duplicate entry '2-349' for key 'posthashtag.PRIMARY'

미해결

[리뉴얼] React로 NodeBird SNS 만들기

음 .. 게시글 하나에 중복으로 된 해시태그를 2개 등록시 ex) #노드#노드 #익스프레스 DB Posts 테이블에는 데이터가 잘 등록되지만 해시태그 아래와 같은 에러가 발생됩니다. Hashtags 테이블에는 등록되지 않습니다. primary key 가 중복이라고 오류 나는 것 같은데 .. findOrCreate 는 DB상에 중복이 안되는거고 .. 생각나는 방법은 Set, filter, split, match, ... 등으로 중복 제거인데 .. findOrCreate 전에 중복제거 해줘야하는 부분일까요? Error at Query.run (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/sequelize/lib/dialects/mysql/query.js:52:25) at /Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/sequelize/lib/sequelize.js:314:28 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async MySQLQueryInterface.bulkInsert (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/sequelize/lib/dialects/abstract/query-interface.js:346:21) at async recursiveBulkCreate (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/sequelize/lib/model.js:1663:25) at async PostHashtag.bulkCreate (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/sequelize/lib/model.js:1752:12) at async Promise.all (index 0) at async BelongsToMany.add (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/sequelize/lib/associations/belongs-to-many.js:516:30) at async /Users/jeondaewon/WebstormProjects/nodebird/prepare/back/routes/post.js:40:13 { name: 'SequelizeUniqueConstraintError', errors: [ ValidationErrorItem { message: 'PRIMARY must be unique', type: 'unique violation', path: 'PRIMARY', value: '2-358', origin: 'DB', instance: null, validatorKey: 'not_unique', validatorName: null, validatorArgs: [] } ], parent: Error: Duplicate entry '2-358' for key 'posthashtag.PRIMARY' at Packet.asError (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/mysql2/lib/packets/packet.js:728:17) at Query.execute (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/mysql2/lib/commands/command.js:29:26) at Connection.handlePacket (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/mysql2/lib/connection.js:488:32) at PacketParser.onPacket (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/mysql2/lib/connection.js:94:12) at PacketParser.executeStart (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/mysql2/lib/packet_parser.js:75:16) at Socket.<anonymous> (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/mysql2/lib/connection.js:101:25) at Socket.emit (node:events:513:28) at addChunk (node:internal/streams/readable:324:12) at readableAddChunk (node:internal/streams/readable:297:9) at Readable.push (node:internal/streams/readable:234:10) { code: 'ER_DUP_ENTRY', errno: 1062, sqlState: '23000', sqlMessage: "Duplicate entry '2-358' for key 'posthashtag.PRIMARY'", sql: "INSERT INTO `PostHashtag` (`createdAt`,`updatedAt`,`HashtagId`,`PostId`) VALUES ('2023-03-07 05:57:36','2023-03-07 05:57:36',3,358),('2023-03-07 05:57:36','2023-03-07 05:57:36',2,358),('2023-03-07 05:57:36','2023-03-07 05:57:36',2,358);", parameters: undefined }, original: Error: Duplicate entry '2-358' for key 'posthashtag.PRIMARY' at Packet.asError (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/mysql2/lib/packets/packet.js:728:17) at Query.execute (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/mysql2/lib/commands/command.js:29:26) at Connection.handlePacket (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/mysql2/lib/connection.js:488:32) at PacketParser.onPacket (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/mysql2/lib/connection.js:94:12) at PacketParser.executeStart (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/mysql2/lib/packet_parser.js:75:16) at Socket.<anonymous> (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/mysql2/lib/connection.js:101:25) at Socket.emit (node:events:513:28) at addChunk (node:internal/streams/readable:324:12) at readableAddChunk (node:internal/streams/readable:297:9) at Readable.push (node:internal/streams/readable:234:10) { code: 'ER_DUP_ENTRY', errno: 1062, sqlState: '23000', sqlMessage: "Duplicate entry '2-358' for key 'posthashtag.PRIMARY'", sql: "INSERT INTO `PostHashtag` (`createdAt`,`updatedAt`,`HashtagId`,`PostId`) VALUES ('2023-03-07 05:57:36','2023-03-07 05:57:36',3,358),('2023-03-07 05:57:36','2023-03-07 05:57:36',2,358),('2023-03-07 05:57:36','2023-03-07 05:57:36',2,358);", parameters: undefined }, fields: { PRIMARY: '2-358' }, sql: "INSERT INTO `PostHashtag` (`createdAt`,`updatedAt`,`HashtagId`,`PostId`) VALUES ('2023-03-07 05:57:36','2023-03-07 05:57:36',3,358),('2023-03-07 05:57:36','2023-03-07 05:57:36',2,358),('2023-03-07 05:57:36','2023-03-07 05:57:36',2,358);" } Error at Query.run (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/sequelize/lib/dialects/mysql/query.js:52:25) at /Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/sequelize/lib/sequelize.js:314:28 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async MySQLQueryInterface.bulkInsert (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/sequelize/lib/dialects/abstract/query-interface.js:346:21) at async recursiveBulkCreate (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/sequelize/lib/model.js:1663:25) at async PostHashtag.bulkCreate (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/sequelize/lib/model.js:1752:12) at async Promise.all (index 0) at async BelongsToMany.add (/Users/jeondaewon/WebstormProjects/nodebird/prepare/back/node_modules/sequelize/lib/associations/belongs-to-many.js:516:30) at async /Users/jeondaewon/WebstormProjects/nodebird/prepare/back/routes/post.js:40:13 POST /post 500 40.883 ms - 1306

  • react
  • redux
  • node.js
  • express
  • next.js
대원 댓글 1 좋아요 0 조회수 387

주문 생성 메서드 createOrder() 질문

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

== [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 주문 생성 메서드인 createOrder()의 파라미터로 가변인자인 OrderItem...을 사용하셨는데 List를 사용하지 않고 특별히 가변인자를 사용하신 이유가 있을까요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
박수환 댓글 1 좋아요 0 조회수 629

수정등록페이지

해결됨

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

Unhandled Runtime Error ApolloError: Failed to fetch 수정등록페이지 들어가면서 갑자기 이게 뜨는데 코드는 봐도 다 똑같은거 같은데 아니면 혹시 수업내용 코드만 따로 깃 이나 확인할 수 있나요? http://practice.codebootcamp.co.kr/graphql 해당주소로 들어가니 Error: Server Error The server encountered a temporary error and could not complete your request.Please try again in 30 seconds. 라고 뜨고 있습니다.

  • react
  • node.js
  • seo
  • graphql
  • next.js
ㅅㅎ 댓글 1 좋아요 0 조회수 462

formData 대신 객체로 보낼때

미해결

[리뉴얼] React로 NodeBird SNS 만들기

백엔드에 게시글 등록시 const upload = multer({...}) router 에서 upload.none() 를 사용하였습니다. 작성된 코드에서는 이미지 업로드 버튼을 누르고 이미지 선택 확인 누르는 순간 로컬에 저장되고 반환되어 프론트에서 imagePaths 에 담겨있습니다. 그 후 강의에선 imagePaths를 FormData에 담아서 보내고있는데 imagePaths는 텍스트만 들어있어서 객체로 보내보려고합니다. 배열을 그대로 담으면 될 것 같아 dispatch({ type: ADD_POST_REQUEST, data: { imagePaths, content: text }, }); 이렇게 작성하여 보냈는데 Network에서도 성공이고 프론트에서도 오류나는것 없이 다 SUCCESS입니다. 게시글에는 사진이 나타나지 않습니다. 경로가 잘못된 것 같지는 않고 .. 어떤 문제가 있는걸까요? [등록 전] [등록 후]

  • react
  • redux
  • node.js
  • express
  • next.js
대원 댓글 1 좋아요 0 조회수 462

반납 기능 관련해서 질문드립니다.

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

강사님 안녕하세요. 이번 강의에서 BookService에 returnBook을 만들어주었는데요, 실행을 하면 반납을 했음에도 불구하고, 같은 이름의 사용자가 이미 반납한 책을 또다시 반납해도 오류가 발생하지 않고, 반납에 성공했다고 결과가 나오는 것을 알게되었습니다. 제 생각에는 UserLoanHistory history = userLoanHistoryRepository.findByUserIdAndBookName(user.getId(), request.getBookName()) .orElseThrow(IllegalArgumentException::new); 해당 코드에서 findby부분에is return도 추가하여 userLoanHistoryRepository.findByUserIdAndBookNameAndIsReturn(user.getId(), request.getBookName(), false)로 해주어야 대출중인 책을 반납하는 동작이 한번 이루어지고, 중복반납이 안될거 같은데 혹시 제가 이해를 잘못한건지 궁금합니다. 감사합니다!

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
황인태 댓글 1 좋아요 1 조회수 670

QueryDSL 5.0.0 기준으로 강의 내용을 정리했는데 올바르게 이해한 것일까요?

미해결

실전! Querydsl

searchPageSimple() : 조회 쿼리와 카운트 쿼리를 한번에 실행 searchPageComplex() : 조회 쿼리와 카운트 쿼리를 분리 QueryDSL 5.0.0부터는 fetchResults() 와 fetchCount() 를 deprecated 메서드로 공지함에 따라, 강의 내용처럼 searchPageSimple() 과 searchPageComplex() 를 구분해서 구현할 필요 없이 searchPageComplex() 의 방식으로만 구현하면 됨. @Override public Page<MemberTeamDto> searchWithPaging(MemberSearchCond cond, Pageable pageable) { // 데이터 조회 쿼리 (페이징 적용) List<MemberTeamDto> content = queryFactory .select( new QMemberTeamDto( member.id.as("memberId"), member.username, member.age, team.id.as("teamId"), team.name.as("teamName") ) ) .from(member) .leftJoin(member.team, team) .where( usernameEq(cond.getUsername()), teamNameEq(cond.getTeamName()), ageGoe(cond.getAgeGoe()), ageLoe(cond.getAgeLoe()) ) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch(); // count 쿼리 (조건에 부합하는 로우의 총 개수를 얻는 것이기 때문에 페이징 미적용) Long total = queryFactory .select(member.count()) // SQL 상으로는 count(member.id)와 동일 .from(member) .leftJoin(member.team, team) .where( usernameEq(cond.getUsername()), teamNameEq(cond.getTeamName()), ageGoe(cond.getAgeGoe()), ageLoe(cond.getAgeLoe()) ) .fetchOne(); return new PageImpl<>(content, pageable, total); } 이 때, total 을 아래와 같이 구할 수도 있지만 long total = queryFactory .selectFrom(member) .leftJoin(member.team, team) .where( usernameEq(cond.getUsername()), teamNameEq(cond.getTeamName()), ageGoe(cond.getAgeGoe()), ageLoe(cond.getAgeLoe()) ) .fetch() // 조건에 부합하는 전체 데이터를 조회 (List) .size(); // List의 길이로 total을 구하기 count 함수는 SQL 차원에서 지원하기 때문에 굳이 이렇게 전체 데이터를 받아온 뒤에 애플리케이션 레벨에서 별도로 size() 를 호출해서 구할 필요 없고, 처음부터 카운트 쿼리를 호출하는 것이 나음. 이유는 전체 데이터를 불러오고 나서 size() 로 구하는 방식은 영속성 컨텍스트에 데이터를 전부 받아온 뒤에 개수를 따로 세는 것이기 때문에 불필요하게 메모리를 잡아먹기 때문. total 을 구하는 방식에 대한 내용은 강의에 언급되지 않았기 때문에 제가 따로 검색해보고 내린 결론입니다. 제가 생각한 것이 맞는지 궁금합니다. 이외에도 잘못된 부분이 있다면 지적해주시면 감사하겠습니다.

  • java
  • jpa
이현준 댓글 1 좋아요 18 조회수 2403

'is' 와 '==' 언제 사용하나요?

미해결

프로그래밍 시작하기 : 도전! 45가지 파이썬 기초 문법 실습 (Inflearn Original)

'is'와 '==' 차이점은 어느 정도 이해되는데, 각각을 언제 사용해야 하는지는 잘 모르겠습니다. 검색을 해보면 주로 '==' 사용하고 None 과 비교할 때 'is'를 사용한다고 하는데 실제로 이렇게 사용하나요? z = 'None' a = None print(f'z is None : {z is None}') print(f'z == None : {z == "None"}') print(f'a is None : {a is None}') print(f'a == None : {a == "None"}') z is None : False z == None : True a is None : True a == None : False

  • python
Jerry 댓글 1 좋아요 0 조회수 473

인기 태그

인프런 TOP Writers

주간 인기글