我在表格(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
列。
EDIT2:
我刚刚创建了一个新的测试表,用一些示例数据填充它并执行完全相同的DELETE
调用,并且该记录仅标记为已删除。
好的,这很好,并且正如@phillipv在评论中说的那样。但现在出现了一个新问题:
如何使用REST API硬删除记录?
答案 0 :(得分:1)
当您启用"软删除"时,该行中的"已删除" 字段将设置为" true" 并且不再从移动服务返回记录(而是永久删除记录)。如果您未启用"软删除",则记录将从数据库中永久删除。此软删除功能是限制您的客户端应用程序完全删除/刷新任何记录/表。跟踪将位于"已删除" 列中。 : - )
并且您不需要明确指定" _Deleted" 列。如果检查API控制器,则可以看到删除操作由
处理 public Task DeleteYourTableName(string id)
{
return DeleteAsync(id);
}
所以,当你传递一个' Id'要删除,上述操作知道该请求是删除提供了Id的记录。如果启用了软删除功能,则会删除'已删除' field设置为true,否则删除整行。这是由移动服务框架内部处理的。