0

이 내 스키마의 관련 부분은 다음과 같습니다몽구스에 다른 정보가있는 입력란을 채울 수 있습니까?

여기
var classroomSchema = mongoose.Schema({ 
    students: [{ 
     _id: mongoose.Schema.Types.ObjectId, 
     ref: 'User', 
     rate: { 
      type: Number, 
      default: 200, 
     }, 
     referrals: [mongoose.Schema.Types.ObjectId], 
    }], 
)}; 

속도와 추천은 교실의 맥락에서 유효 학생들의 특성, 그리고 학생 모델에서 채울 수 없습니다.

해당 필드 (비율 및 추천)를 유지하고 학생의 이름, 나이 등과 같은 다른 필드를 채우기 위해 채우기를 사용할 수 있도록 스키마를 정의 할 수있는 방법이 있습니까?

+0

은 $ LOOKUP 'https://stackoverflow.com/questions/9621928/how-do-i'를 살펴 보자 -query-referenced-objects-in-mongodb/39476690 # 39476690 – sidgate

답변

1
이에 스키마를 변경

:

var classroomSchema = mongoose.Schema({ 
    students: [{ 
     rate: { type: Number, default: 200 }, 

     user: { ref: 'User', type: Schema.Types.ObjectId }, 
     referrals: [mongoose.Schema.Types.ObjectId], 
    }], 
}); 

는 사용법 :

classroom 
    .findOne(...) 
    .populate('user') 
    .exec((err, classroom) => { 
    let student0 = classroom.students[0]; 
    // student0.rate 
    // student0.user.name 
    }); 
+0

더 좋은 방법이 있습니까? 사용자 배열을 학생 arraay에 저장하면 내게 부 자연스러운 것처럼 보입니다. – lightbringer

+0

'user' 필드는 단지'User'에 대한 참조 일뿐입니다. 사용자를 여러 개의 강의실에 추가 할 수있는 가장 자연스러운 방법입니다. – Xiaoy312

관련 문제