2016-03-09 26 views
0

我正在嘗試將教程改編爲另一個項目,以便獲取平均堆棧的掛起並且遇到帖子請求時遇到麻煩。未能在MEAN堆棧應用程序中寫入發佈請求

我'嘗試新的元素添加到陣列的評論:

var CourseSchema = new mongoose.Schema({ 
code: String, 
name: String, 
reviews: [{ 
    body: String 
}] 

在前面,我有以下函數調用的課程服務addReview功能:

courses.addReview($scope.course._id, tempReview).success(function (review){ 
      //$scope.course.reviews.push(review); 
      console.log('addingReview'); 
     }); 

課程服務addReview的功能是:

o.addReview = function (id, review) { 
    console.log('posting Review') 
    return $http.post('/courses/'+ id + '/reviews', review); 
}; 

所有這一切都應該沒問題,因爲我的發送請求被成功發送到服務器(我在帖子的控制檯上收到200條消息)。

這裏是我的後端代碼:

var Course = mongoose.model('Course'); 
    router.post('/courses/:course/reviews', function (req, res, next){ 

    Course.findById(req.course, function (err, course){ 
     course.addReview(req.body); 
     res.json(course); 
     res.end(); 
    }) 
}); 

,並從我的課程模式addReview功能:

CourseSchema.methods.addReview = function (review) { 
    this.reviews.push(review); 
    this.save(review); 
}; 

我已看過一些博客文章,但還是不明白怎麼寫該發佈請求數組...任何幫助將不勝感激!

感謝

+0

「如何編寫一個數組,POST請求'有點混亂。顯然你不'添加新的元素到評論陣列',你添加新的文檔到MongoDB集合'課程'。你能檢查這個集合是否有任何改變? – oKonyk

+0

集合中沒有變化。是什麼讓你認爲我在課程中增加了一個元素而不是現場評論? – Puck7

+0

對不起,我的錯。後端代碼看起來很好......我會做幾件事情:if(err){console.log(err)} - 檢查是否有任何信息; console.log(當然),看看我們是否真的在集合中找到任何東西(所有在'Course.findById'塊) – oKonyk

回答

1

據我瞭解,我做了修改,但不能將其保存在數據庫,這裏是代碼我現在使用:

router.post('/courses/:course/reviews', function (req, res, next){ 

    Course.findById(req.course, function (err, course){ 
     course.addReview(req.body); 
     course.save(function (err, course){ 
      if(err){ return next(err);} 
      console.log(course); 
      res.json(course); 
      res.end(); 
     }); 

    }) 

});