Ajax DELETE查询返回意外的对象

时间:2016-09-24 16:54:35

标签: javascript jquery ajax mongoose

我的删除控制器和AJAX查询在数据中传递意外结果。

我的AJAX请求中有以下内容:

var endpoint = '/api/places/'+$(this).attr('id'); $.ajax({ method: 'DELETE', url: endpoint, dataType:"json", data: $(this).serializeArray(), success: deletePlace, error: handleError });

其中endpoint是我的控制器中的有效URL和相同的URL,如下所示:

app.delete('/api/places/:id', function deletePlace(req, res) { // remove place db.Place.remove({ _id: req.params.id }, function(err, removePlace){ if (err) { throw (err) }; res.json(removePlace); });

传递到deletePlace的数据是“Object {ok:1,n:1}”,当我希望它是被删除的Place的JSON时。请原谅我的新手,但我一直在为此辩解。在这里搜了这么多帖子但仍然找不到答案。

1 个答案:

答案 0 :(得分:0)

只有.remove不会返回已删除的文档。

所以您必须使用.findByIdAndRemove方法。

请仔细阅读api:http://mongoosejs.com/docs/api.html#model_Model.findByIdAndRemove

以下是修复:

app.delete('/api/places/:id', function deletePlace(req, res) {
  // remove place
  db
    .Place
    .findByIdAndRemove(req.params.id, 
      function(error, deletedDocument) {
        if (error) {
          return 
            res
              .status(500)
              .send({
                success: false, 
                error: error, 
                data: {}
              });
        }

        res
          .send({
            success: true, 
            data: deletedDocument
          });
      });
});