使用ObjectID删除特定记录

2024-03-29 01:24:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在定义一个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,请考虑。你知道吗


Tags: selfid数据库data记录buttondeleteh1
1条回答
网友
1楼 · 发布于 2024-03-29 01:24:26

很难找到确切的问题,但有几件事需要注意:

  1. 正如nnnnnn已经指出的,在锚点(a)元素中嵌套button是奇怪的,可能会导致奇怪的问题。你知道吗
  2. 指令ng-click="delete_note(r.ObjectId)"看起来很奇怪:python代码真的将_id字段重新映射到名为ObjectId的字段吗?ObjectId是MongoDB中(默认)键的类型名称的约定是_id。你知道吗
  3. 要找到答案,请在获取原始数据时查看网络检查器(即$scope.retrieve)-它发送什么?它还有助于调试输出<pre>{{retrieve | json}}</pre>,这样您就可以看到最终的结果
  4. 你显然是在用GET删除。虽然没有什么能阻止你这么做,但用GETs写作是一种不好的做法。如果可能的话,可以使用HTTPDELETE删除。如果这是完全不可能的原因,至少使用一个职位。但是GET应该是空的,也就是说,它不应该改变服务器的状态。你知道吗
  5. REST请求的参数应该是URL的一部分,因此您的delete应该是

    DELETE /notes/:noteId,例如DELETE /notes/54fadec1e4259ded64c7576a

    将标识参数放在其他地方违反了资源url的思想。

相关问题 更多 >