2015-01-20 115 views
0

IM在我的下面一個delete路線應用運行快報:快遞/貓鼬REST麻煩

router.route('/lists/:id') 
.delete(function(req, res){ 
    Entry.remove({ 
     _id: req.params.id 
     }, function(err, list){ 
      if(err) 
       res.send(err) 

      list.title = req.body.title; 

      res.json({message: 'successfully deleted'}); 

      console.log('DELETE on /lists/'+ req.params.id); 
    }); 
}); 

這裏是我的貓鼬模式:

var mongoose = require('mongoose'); 

var Schema = mongoose.Schema; 

var ListSchema = new Schema({ 
title: String 
}); 

module.exports = mongoose.model('List', ListSchema); 

當我的應用程序打delete路線,我的終端記錄適當的語句,但模型不會從數據庫中刪除。當我打電話fetch的收集,所有的有記錄仍然存在。

我使用在我的網站上不同的集合數據的一個非常類似的方法,並能正常工作,所以我真的在對爲什麼會發生虧損。

+2

我有一個愚蠢的問題:是_id正確的嗎?你使用的是對象的mongo _id,而不是你創建的id屬性,對嗎? – SirBraneDamuj 2015-01-20 20:36:41

+0

我設置的ID在我的骨幹模式 – redress 2015-01-20 20:57:55

+0

您可以編輯您的問題,以顯示'req.params.id'而您希望該文件的值被刪除? – JohnnyHK 2015-01-20 21:30:04

回答

0

貓鼬,如果未傳遞到架構構造一個_id字段默認分配每個模式的。 assiged類型是的ObjectId與MongoDBs默認行爲

嘗試傳遞_id爲的ObjectId一致:

var ObjectId = require('mongoose').Types.ObjectId; 
var query = { _id: new ObjectId(req.params.id) }; 
+0

這不是必需的,因爲Mongoose會爲您執行此投射。 – JohnnyHK 2015-01-20 21:27:37