我正在使用Angular4,Express 4.15和Node 7.9。 我的GET,POST,PUT请求工作正常..但我不确定为什么删除功能不起作用。我使用Mlab作为我的mongodb,并使用mongojs进行连接。
编辑 - 在邮差上,做我删除请求我得到一个我不理解的选举ID(见下文)
我没有看到任何错误,当我点击删除按钮时,我得到200响应代码。
这是前端 -
<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"
}
感谢您的帮助,谢谢!
答案 0 :(得分:1)
响应中的"n": 0
表示数据库查询与任何文档都不匹配。在这种情况下,可能是因为您编写了req.param.id
而不是req.params.id
。