【问题标题】:Azure Mobile Services: Soft delete record using the REST API?Azure 移动服务:使用 REST API 软删除记录?
【发布时间】:2015-07-24 08:47:51
【问题描述】:

我在表 (as described here) 上启用了软删除功能。 如何使用 REST API 软删除/将行标记为已删除?

Rest API 告诉您如何在 query statement 中包含已删除的记录,但没有说明如何将一条记录标记为已删除。

我尝试发送更新查询,但收到:

{
  "code":400,
  "error":"Error: The property '__deleted' can not be set. Properties that begin with a '__' are considered system properties."
}

我也尝试使用 DELETE 方法,但实际上删除了记录。

任何帮助表示赞赏!

编辑:

@phillipv 要求提供更多信息:我正在使用 Swift 和 Alamofire 框架。但即使我像这样使用curl

curl -i \
-X DELETE \
-b "ARRAffinity=XXXXX" \
-H "x-zumo-auth: XXXXXXXX" \
-H "x-zumo-application: XXXXXXX" \
"https://myproject.azure-mobile.net/tables/myTable/BB65C071-6425-44BA-BB63-EBF4D9BF37A1"

记录被(硬)删除。

我对现有表(创建于 2014 年初)启用了软删除功能会不会是个问题?对于没有__deleted 列的所有表,都有一个指向Enable soft delete 的按钮。在相关表格中,按钮不存在,因为我启用了该功能,并且在列视图中列出了 __deleted 列。

编辑2:

我刚刚创建了一个新的测试表,用一些示例数据填充了它,并执行了完全相同的DELETE 调用,并且该记录仅被标记为已删除。

好的,这很好,就像@phillipv 在 cmets 中所说的那样。但是现在出现了一个新问题:

如何使用 REST API 硬删除记录?

【问题讨论】:

  • 如果设置成功,DELETE 应将其标记为软删除。您能否更新问题以显示您的配置(或至少您正在使用的后端)
  • @phillipv 看到我的编辑。如果 DELETE 软删除了一条记录,我该如何使用 REST API 硬删除一条记录?

标签: rest azure-mobile-services


【解决方案1】:

启用“软删除”后,该行的“已删除”字段将设置为“true”,不再从移动服务返回记录(而不是永久删除记录)。如果您不启用“软删除”,该记录将从数据库中永久删除。此软删除功能是为了限制您的客户端应用程序完全删除/刷新任何记录/表。 “已删除” 列中将显示这些痕迹。 :-)

而且您不需要明确指定 "_Deleted" 列。如果您检查 API 控制器,您会看到删除操作由

处理
    public Task DeleteYourTableName(string id)
    {
      return DeleteAsync(id);
    }

所以当你传递一个'Id'来删除时,上面的动作知道请求是删除具有提供的Id的记录。如果启用软删除,'Deleted' 字段设置为 true,否则删除整行。由移动服务框架在内部处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2021-06-13
    • 2014-10-25
    相关资源
    最近更新 更多