2015-01-20 3 views
0

Im работает Экспресс на моем приложении с delete маршрутом ниже:Экспресс/Mongoose 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); 
    }); 
}); 

Вот моя Mongoose схема:

var mongoose = require('mongoose'); 

var Schema = mongoose.Schema; 

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

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

Когда моя заявка попадет в delete маршрут, мой терминал регистрирует соответствующий оператор, но модель не удаляется из базы данных. Когда я звоню fetch в сборнике, все записи там все еще есть.

Я использую очень похожий подход к другому набору данных на своем веб-сайте, и он отлично работает, поэтому Im действительно в недоумении, почему это происходит.

+2

У меня есть немой вопрос: является ли _id правильно? Вы используете объект mongo _id, а не некоторый атрибут id, который вы создали, не так ли? – SirBraneDamuj

+0

Я установил ID в моей базовой модели – redress

+0

Можете ли вы изменить свой вопрос, чтобы показать значение 'req.params.id' и документ, который вы ожидаете удалить? – JohnnyHK

ответ

0

Mongoose присваивает каждой из ваших схем поле _id по умолчанию, если оно не передается в конструктор схемы. Тип assiged является ObjectId совпадает с поведением MongoDBs по умолчанию

Try прохождения _id в ObjectId:

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

Это не обязательно, потому что Mongoose выполняет эту кастинг для вас. – JohnnyHK

Смежные вопросы