2017-09-27 10 views
0

これは私のスキーマの関連部分である:ここでは他の情報も入っているmongooseにフィールドを設定することは可能ですか?

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

関連する問題