我定义了一个删除功能,其中每行都有一个删除按钮,将该特定记录的ObjectID发送到我的服务器端,因此,此ObjectId将检查存储在数据库中的那个,导致删除该特定记录,到目前为止,我可以在发送数据并检查它方面取得良好进展,但我怀疑ObjectId是发送,需要某种铸造。目前,代码和回复如下;
前端(Index.Html)
<a href="#" class="list-group-item active" >
List Of Notes
</a>
<a href="#" class="list-group-item" ng-repeat="r in retrieve" >
{{r.create_at}}
<button style="float:right" type="button" ng-click="delete_note(r.ObjectId)"
class="btn btn-danger btn-xs">
Delete <i class="fa fa-trash"></i>
</button>
</a>
AngularJS(main.ctrl.js)
$scope.delete_note = function (data_id) {
$http.get('/delete_note', {
params: data_id
}).success(function(data){
console.log(data)
});
}
后端(Root.py)
@cherrypy.expose
@cherrypy.tools.json_out()
@cherrypy.tools.json_in()
def delete_note(self,*args,**kwargs):
res2=self.my_app.delete_note(kwargs)
return "<h1>delete success </h1>" +str(res2)
pass
后端(App.py)
def delete_note(self, index):
return self.db.notes.remove({'_id': index})
当前消息显示在Google Chrome控制台中。日志是:
<h1>delete success </h1>{'ok': 1, 'n': 0}"
这显然表明,数据库中没有任何变化,我使用Cherrypy,Mongodb和Angularjs,我们对此表示赞赏。
答案 0 :(得分:1)
找到确切的问题很难找到,但有一些事情需要引起注意:
button
嵌套在一个锚(a
)元素中是奇怪的,可能会导致奇怪的问题。ng-click="delete_note(r.ObjectId)"
看起来很奇怪:你的python代码是否真的将_id
字段重新映射到名为ObjectId
的字段? ObjectId
是MongoDB中(默认)键的类型,名称的约定是_id
。$scope.retrieve
) - 它发送了什么?调试输出<pre>{{retrieve | json}}</pre>
也很有帮助,这样你就可以看到最终的角度GET
进行删除。虽然没有什么可以阻止你这样做,但用GET写作是不好的做法。如果可能,请使用HTTP DELETE
进行删除。如果由于某种原因完全不可能,至少使用POST。但GET应该是无效的,即它不应该改变服务器状态 。REST请求的参数应该是URL的一部分,因此您的删除应该是
DELETE /notes/:noteId
,例如DELETE /notes/54fadec1e4259ded64c7576a
将识别参数放在其他地方违反了资源网址的想法。