我正在定义一个delete函数,其中每行都有一个delete按钮,将特定记录的ObjectID发送到我的服务器端,因此,这个ObjectID将与数据库中存储的ObjectID进行检查,从而删除该特定记录,到目前为止,我可以在发送数据结束时取得良好的进展,检查一下,但我怀疑ObjectId被发送了,需要某种类型的转换。目前,代码和响应如下:
前端(索引.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>
角度(主目录.ctrl.js)
$scope.delete_note = function (data_id) {
$http.get('/delete_note', {
params: data_id
}).success(function(data){
console.log(data)
});
}
后端(根.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
后端(应用程序类型)
def delete_note(self, index):
return self.db.notes.remove({'_id': index})
当前消息出现在Google Chrome中控制台.log这是:
<h1>delete success </h1>{'ok': 1, 'n': 0}"
很明显,数据库中没有任何更改,我使用的是Cherrypy、Mongodb和Angularjs,请考虑。你知道吗
很难找到确切的问题,但有几件事需要注意:
a
)元素中嵌套button
是奇怪的,可能会导致奇怪的问题。你知道吗ng-click="delete_note(r.ObjectId)"
看起来很奇怪:python代码真的将_id
字段重新映射到名为ObjectId
的字段吗?ObjectId
是MongoDB中(默认)键的类型,名称的约定是_id
。你知道吗$scope.retrieve
)-它发送什么?它还有助于调试输出<pre>{{retrieve | json}}</pre>
,这样您就可以看到最终的结果GET
删除。虽然没有什么能阻止你这么做,但用GETs写作是一种不好的做法。如果可能的话,可以使用HTTPDELETE
删除。如果这是完全不可能的原因,至少使用一个职位。但是GET应该是空的,也就是说,它不应该改变服务器的状态。你知道吗REST请求的参数应该是URL的一部分,因此您的delete应该是
DELETE /notes/:noteId
,例如DELETE /notes/54fadec1e4259ded64c7576a
将标识参数放在其他地方违反了资源url的思想。
相关问题 更多 >
编程相关推荐