2016-09-05 84 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存储studentAssigns的所有的ID,然后可以用.pre中间件级联删除使用。

所以现在我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); 
    }); 
}) 

所以这就是我在哪里会推动t他'studentAssign'到'Assignment'模式的'studentAssigns数组??

这里是我当前API JSON回调:

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

文档只是没有说清楚,因为他们只是显示:

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

没有解释?

我已经尝试过: var assignment = new Assignment(); assignment.studentAssigns.push(studentAssign);没有东西存储?

+0

你叫assignment.save(); ? – Molda

+0

@Molda对不起,我没有复制那部分 –

回答

0

您模型状态:

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

我想从你的代码,你不想在ASSID多任务和多学生存放在studentID。修改您的模型到

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

您的保存代码可以保持不变。

如果你想存储例如多任务,你需要将它们推入ASSID阵列;-)