MEAN堆栈DELETE无法正常工作 - 什么是electionId?

时间:2017-05-10 22:23:47

标签: node.js mongodb angular express mean-stack

我正在使用Angular4,Express 4.15和Node 7.9。 我的GET,POST,PUT请求工作正常..但我不确定为什么删除功能不起作用。我使用Mlab作为我的mongodb,并使用mongojs进行连接。

编辑 - 在邮差上,做我删除请求我得到一个我不理解的选举ID(见下文)

我没有看到任何错误,当我点击删除按钮时,我得到200响应代码。enter image description here

这是前端 -

<td><input (click)="deleteCandidate(candidate)" type="button" class="btn btn-danger pull-right" value="Delete"></td>

我的组件中的功能 -

deleteCandidate(candidate){
  var candidates = this.candidates;

  this._candidateService.removeCandidate(candidate._id)
  .map(res => res.json())
  .subscribe(data => {
    if(data.n == 1){
      for(var i = 0; i < candidates.length; i++){
        if(candidates[i]._id == candidate._id){
          candidates.splice(i, 1);
        }
      }
    }
  });
}

以及相应的服务 -

removeCandidate(id)
    {
        return this._http.delete('/api/v1/candidate/'+id);  
    }

这是ExpressJS的路线(我使用过mongojs) -

// Delete a candidate
router.delete('/candidate/:id', function(req, res, next) {
    db.candidates.remove({
        _id: mongojs.ObjectId(req.param.id)
    }, '', function(err, result) {
            if(err){
            res.send(err);
        }
        else {
            res.json(result);
        }
    });
});

编辑 - 刚刚尝试从Postman执行DELETE请求,但没有成功。我得到以下回复 -

{
  "ok": 1,
  "n": 0,
  "opTime": {
    "ts": "6418646173661265921",
    "t": 1
  },
  "electionId": "7fffffff0000000000000001"
} 

感谢您的帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

响应中的"n": 0表示数据库查询与任何文档都不匹配。在这种情况下,可能是因为您编写了req.param.id而不是req.params.id