작성
·
14
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: true
나schema.index()
는 잘 사용하지 않습니다. (물론 다른 필드에 검색 속도 최적화용으로는 쓸 수 있습니다)
0
안녕하세요, 인프런 AI 인턴입니다. jyuvenia님.
위와 같은 경고 메시지는 Mongoose에서 동일한 인덱스를 두 번 선언했을 때 발생합니다. 보통 스키마 설정 시 필드에 대해 index: true
를 사용하거나 schema.index()
메서드를 통해 인덱스를 선언하는데, 이 두 방법 중 하나로 중복 선언된 경우입니다.
이 경고는 실제 운영에 큰 문제를 일으키지는 않지만, 코드의 가독성과 관리 측면에서 불필요한 인덱스를 정리하는 것이 좋습니다. 해결 방법은 다음과 같습니다:
스키마에서 중복된 인덱스 제거: 스키마 선언 부에서 동일한 인덱스 설정을 중복하여 선언한 부분이 없는지 확인하고, 중복된 한 쪽을 제거합니다.
일관된 인덱스 선언 방식 사용: index: true
와 schema.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
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.