inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

타입스크립트로 배우는 리액트(React.js) : 기초부터 최신 기술까지 완벽하게

260. 카카오 로그인 구현하기 - 2 에서 백엔드 시작시 경고 메시지

해결된 질문

97

jyuvenia

작성한 질문수 8

0

 [MONGOOSE] Warning: Duplicate schema index on {"email":1} found. This is often due to declaring an index using both "index: true" and "schema.index()". Please remove the duplicate index definition.

 

백엔드 시작 시 위와 같은 경고 메시지가 나옵니다. 작동은 문제가 없습니다.

react react-router redux-toolkit zustand react.js

답변 3

0

수코딩

안녕하세요!

제공된 백엔드 소스의 backend > models > User.js 파일에서

아래와 같이 unique: true, sparse: true 옵션을 주석 처리하시면 됩니다.

크게 문제가 되지는 않는 부분이므로 그대로 쓰셔도 괜찮습니다.

감사합니다!

email: {
  type: String,
  // unique: true,
  // sparse: true,
  trim: true,
  lowercase: true,
},

0

eggmun(문성진)

아래 AI 답변처럼
index: true / unique: true 옵션과 schema.index()를 같이 쓰면 중복 인덱스가 생겨서 저 경고가 뜨는 거예요.

실제로는 서비스 동작에는 큰 문제 없지만, 불필요한 인덱스가 중복으로 잡히니까 코드 관리 차원에서 한 쪽만 쓰시는 게 깔끔합니다.
특히 이메일 같은 경우는 보통 unique: true만 두고,index: trueschema.index()는 잘 사용하지 않습니다. (물론 다른 필드에 검색 속도 최적화용으로는 쓸 수 있습니다)

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. jyuvenia님.

위와 같은 경고 메시지는 Mongoose에서 동일한 인덱스를 두 번 선언했을 때 발생합니다. 보통 스키마 설정 시 필드에 대해 index: true를 사용하거나 schema.index() 메서드를 통해 인덱스를 선언하는데, 이 두 방법 중 하나로 중복 선언된 경우입니다.

이 경고는 실제 운영에 큰 문제를 일으키지는 않지만, 코드의 가독성과 관리 측면에서 불필요한 인덱스를 정리하는 것이 좋습니다. 해결 방법은 다음과 같습니다:

  1. 스키마에서 중복된 인덱스 제거: 스키마 선언 부에서 동일한 인덱스 설정을 중복하여 선언한 부분이 없는지 확인하고, 중복된 한 쪽을 제거합니다.

  2. 일관된 인덱스 선언 방식 사용: index: trueschema.index() 중 하나의 방식으로 일관되게 인덱스 관리를 합니다.

예시

// 문제 발생 가능 부분
const userSchema = new mongoose.Schema({
  email: { type: String, required: true, unique: true, index: true }
});
// 중복 선언
userSchema.index({ email: 1 });

// 해결 방법 - 하나의 인덱스 선언 방식 사용
const userSchema = new mongoose.Schema({
  email: { type: String, required: true, unique: true }
});
// 또는 위 선언부에서 index: true 옵션을 제거

참고 링크

이와 비슷한 상황에 대한 Q&A에서 더 많은 정보를 얻으실 수 있습니다:
- Mongoose 인덱스 중복 경고 관련 문제 해결하기
- 중복 인덱스 경고 처리에 대한 Q&A

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이해가 절반 정도 되는데요.

0

29

1

styled-components(전역)

0

30

1

cloudinary 관련

0

50

3

useOptimistic 실전-1 useState

0

73

2

discord 초대장 갱신이 필요한거같습니다.

0

69

1

할일 관리 앱(메모이제이션)

0

85

2

Web 플랫폼 등록

0

114

2

함수 정의 기준

0

81

2

fetch는 사용되는가

0

79

2

전역상태 관리 선택 기준

0

93

2

tailwind css는 언제 사용되는가 또 다른 css와의 차이

0

177

2

카카오 web플랫폼 등록

0

168

2

컴포넌트 그리고 폴더 구조에 대해

0

66

2

152강 보는중입니다. 초시계부분이구요. 넘버가 timeout을 받을수없다는 에러가 나오고 있어요

0

47

1

폼테그 다른 태그를 하나의 상태 객체로 묶기

0

48

2

class를 className으로 전부 수정하실 때

0

46

2

JWT에 대한 개념도 학습할 수 있나요?

0

69

2

수업자료 다운로드

0

58

2

리액트 객체의 타입을 알기위하여 마우스를 올렸을 때 나오는 형식이 강의와 다른 부분 문의 드립니다.

0

68

2

useState 자동생성 하실때 누른 키보드가 궁금합니다.

0

55

1

타입스크립트 타입이 불일치하는데 에러가 안납니다.

0

80

3

default format >> prettier 이 실행이 안됩니다.

0

70

2

윈도우 사용자입니다. homebrew 윈도우 설치법은 없나요?

0

359

3

리렌더링 관련 문의

0

60

2