基于 JSON Patch 的部分文档更新
作者: steve-chavez创建于 2024年1月16日更新于 2026年8月24日
标签idea
□ 问题
目前无法进行部分文档更新.
- https://GitHub.com/PostgREST/postgrest/issues/465#issuecomment-1198884375讨论json补丁,但鉴于我们的横向过滤,有些操作(如`测试')没有多大意义。
- 在https://GitHub.com/PostgREST/postgrest/issues/465#issuescomment-1199858002上提出了一个备选方案,但灵活性使其难以实施。 此外,它也不是孤立为单一内容类型.
□ 解决
使用基于json补丁的供应商媒体类型,支持我们缺乏的业务。 作为前一种艺术,[Azure Cosmosdb json补丁](https://learn.microsoft.com/en-us/ZAzure/cosmos-db/ partic-document-update# support-operforcements)(也见此处)做了类似的事情,并增加了对JSONPatch RFC中未定义的crement'和set'set'的支持。
首先,我们可以增加对增量的支持。 像这样:
翻译: PATCH/项目?id=eq.1 内容-Type:应用程序/vnd.pgrst.json-patch
[ {"op":"incr","路径":"/存货","值":10}, [ . ]
路径将指任何一栏,生成的SQL将类似于`UPDATE项目SET库存=库存+10'。
稍后,我们可以扩大这一范围,增加其他行动,如`mult'、`div'、`concat'等.内容来源: PostgREST/postgrest