2016-09-05 7 views
0

私はマングース子供の人口に関する例や文書を見つけるのに苦労しています。彼らが持っているマニュアルのマングースは子供を参照してください

http://mongoosejs.com/docs/populate.html

var mongoose = require('mongoose') 
    , Schema = mongoose.Schema 

var personSchema = Schema({ 
    _id  : Number, 
    name : String, 
    age  : Number, 
    stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }] 
}); 

var storySchema = Schema({ 
    _creator : { type: Number, ref: 'Person' }, 
    title : String, 
    fans  : [{ type: Number, ref: 'Person' }] 
}); 

var Story = mongoose.model('Story', storySchema); 
var Person = mongoose.model('Person', personSchema); 

それは理にかなって、人は、このようにあるすべてのストーリーのリストを持っている「親」フィールド「の物語」を多くの物語を持つことができます

私が理解するのに苦労しているのは、その話を人のスキーマにどのようにプッシュしているかです。

var mongoose  = require ('mongoose'), 
    Schema  = mongoose.Schema; 

var assignmentSchema = new Schema (
    { 
     _id: String, 
     assignName: String, 
     modInsID: [{ type: Schema.Types.Number, ref: 'ModuleInst' }], 
     studentAssigns: [{type: Schema.Types.ObjectId, ref: 'StudentAssign' }] 
    } 
); 

module.exports = mongoose.model ('Assignment', assignmentSchema); 

studentAssigns格納次いでカスケード削除する.preミドルウェアで使用することができるstudentAssignsのすべてのIDが:

は、例えば、私は、割り当てスキーマを有します。

だから今、私StudentAssignスキーマ:

var mongoose  = require ('mongoose'), 
    autoIncrement = require ('mongoose-auto-increment'), 
    Schema  = mongoose.Schema; 

var connection = mongoose.createConnection("************"); 
autoIncrement.initialize(connection); 


var studentAssignSchema = new Schema (
    { 
     assID: [{ type: Schema.Types.String, ref: 'Assignment' }], 
     studentID: [{ type: Schema.Types.Number, ref: 'Student' }] 
    } 
); 

var StudentAssign = connection.model('StudentAssign', studentAssignSchema); 
module.exports = mongoose.model ('StudentAssign', studentAssignSchema); 

あなたはそれがすでにここにAssignment "

を参照している見ることができるように私のAPIコードです:

studentAssign POST:

router.route('/student-assignment').post(function(req, res) { 
    var studentAssign = new StudentAssign(); 
    studentAssign.assID = req.body.assID; 
    studentAssign.studentID = req.body.studentID; 

    studentAssign.save(function(err, studentAssign) { 
     if(err) console.log(err); 
     res.status(200).json(studentAssign); 
    }); 
}) 

これは私が混乱している部分です彼は 'studentAssign'を 'Assignment'スキーマの 'studentAssignsアレイに入れますか?ここ

は私の現在のAPIのJSONコールバックです:説明なしで

aaron.stories.push(story1); aaron.save(callback);

を:彼らはちょうど示して

[ 
    { 
    "_id": "As 1", 
    "assignName": "Software Implementation", 
    "__v": 0, 
    "studentAssigns": [], 
    "modInsID": [ 
     { 
     "_id": 22, 
     "semester": "TRI 3", 
     "year": 2016, 
     "__v": 0, 
     "modID": [ 
      111 
     ] 
     } 
    ] 
    } 
] 

ドキュメントはそれを明確にしないのですか?

私は試みました: var assignment = new Assignment(); assignment.studentAssigns.push(studentAssign);何も格納されていませんか?

+0

にそれらをプッシュする必要があります(assignment.saveを電話しました)。 ? – Molda

+0

@Molda yup申し訳ありませんが、私はその部分を –

答えて

0

あなたのモデルの状態:

assID: [{ type: Schema.Types.String, ref: 'Assignment' }], 
studentID: [{ type: Schema.Types.Number, ref: 'Student' }] 

私はあなたがstudentIDにassIDで複数の割り当てと複数の生徒を保存したくないあなたのコードからだと思います。モデルを

assID: { type: Schema.Types.String, ref: 'Assignment' }, 
studentID: { type: Schema.Types.Number, ref: 'Student' } 

のように変更することができます。

あなたは、たとえば複数の割り当てを保存したいならば、あなたはassID配列;-)

関連する問題