使用PATCH恢复soft_delete导致422个未知字段“_deleted”

时间:2015-06-03 23:49:01

标签: python mongodb eve

在python-eve 0.6中使用soft_deletes并设置一个函数来恢复删除,但我得到一个带有错误的422(UNPROCESSABLE ENTITY) {"_status": "ERR", "_issues": {"_deleted": "unknown field"}}

这是来自GET的json响应

{
  "_updated": "Tue, 02 Jun 2015 23:58:50 GMT",
  "_latest_version": 2,
  "_error": {
    "message": "The requested URL was not found on this server.",
    "code": 404
  },
  "title": "Kimberli Dygert",
  "_version": 2,
  "_deleted": true,
  "_links": {
    "self": {
      "href": "items\/556cdaf4ee67bd0717181826",
      "title": "item"
    }
  },
  "_created": "Mon, 01 Jun 2015 22:21:40 GMT",
  "_status": [
    "ERR"
  ],
  "_id": "556cdaf4ee67bd0717181826",
  "_etag": "d48684051f506ea70590682d1705f18a74faea2f"
}

我正在使用的函数尝试恢复soft_delete

this.restore = function (id, etag) {
    var req = {
        method: 'PATCH',
        url: urlBase + '/' + id,
        headers: {
            //'Content-Type': 'application/json',
            'If-Match': etag
        },
        data: { '_deleted': false  }
    };
    return $http(req);
};

1 个答案:

答案 0 :(得分:2)

_etag_updated_created字段类似,_deleted是由Eve管理的特殊元字段。客户端不应直接编辑该字段,您无需为了还原软删除的文档。对软删除文档发出的有效PATCH(或PUT)请求会自动恢复文档,Eve会相应地更新_deleted字段。只需从PATCH请求中删除'_deleted': false,文档就会按预期恢复。