2016-02-29 123 views
0

我無法弄清楚,希望有人能夠幫助我。貓鼬綱要和objectid參考文獻

我基本上試圖實現的是有幾個地點,每個地點都附有幾個課程。

我有這樣的貓鼬模式:

var mongoose = require('mongoose'); 

var lessonNames = new mongoose.Schema({ 
    day: {type: String }, 
    name: {type: String}, 
    startTime: {type: String}, 
    endTime: {type: String} 
}); 

var locationNames = new mongoose.Schema({ 
    name: {type: String, required: true}, 
    address: String, 
    lessons: [ { type: mongoose.Schema.Types.ObjectId, ref: 'lessonnames'}] 
}); 

mongoose.model('lessonnames', lessonNames); 
mongoose.model('locationnames', locationNames); 

我已經成功,是增加了教訓,並在同一過程中添加的位置,並能夠教訓ID設置爲教訓REF。

但是,我將如何添加一個課程,並將其ID添加到一個已經存在的位置? 我可以找到正確的位置,但我無法弄清楚如何添加一個新課程,其中課程引用填充了課程的ID。

謝謝!

回答

0

使用$push操作

var LessonNames = mongoose.model('lessonnames', lessonNames); 
var LocationNames = mongoose.model('locationnames', locationNames); 

new LessonNames(<lesson_object>).save(function(err, lesson){ 
    LocationNames.update({_id: id}, {$push: {lessons: lesson._id}}, function(err, result){ 

    }) 
}) 
+0

謝謝你們Molda!與您的解決方案一起工作,現在正在工作!我很開心 :) – Ralf

0

到目前爲止您嘗試了什麼?

保存的教訓後,你可以找到位置,並嘗試location.lessons.addToSet(lesson.id)

http://mongoosejs.com/docs/api.html#types_array_MongooseArray.addToSet

+0

我一直對這個一整天,一直在尋找和嘗試一個在我來這裏發佈這個問題之前有很多事情,我使用的主要事情是推送和保存,但從來沒有得到我想要的結果。找到了一些例子,但他們大多是其他方式。在哪裏可以將位置ID放在lessonNames中。但我認爲這不是一個好辦法。我會嘗試一下!在此先感謝:) – Ralf