강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

jyuvenia님의 프로필 이미지
jyuvenia

작성한 질문수

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

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

작성

·

12

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.

 

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

답변 3

0

수코딩님의 프로필 이미지
수코딩
지식공유자

안녕하세요!

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

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

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

감사합니다!

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

0

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

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

0

안녕하세요, 인프런 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

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

jyuvenia님의 프로필 이미지
jyuvenia

작성한 질문수

질문하기