Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

[*] 如何保证新增和删除多个表的数据时的顺序 #758

Open
zuzuviewer opened this issue Sep 14, 2024 · 7 comments
Open

[*] 如何保证新增和删除多个表的数据时的顺序 #758

zuzuviewer opened this issue Sep 14, 2024 · 7 comments

Comments

@zuzuviewer
Copy link

zuzuviewer commented Sep 14, 2024

Description

如何保证新增和删除多个表时的顺序
比如在一个删除请求中删除主表和其子表数据,如何保证子表的数据会先被删除,java中可以维持map的顺序,但是golang中无法保证map的访问顺序

@zuzuviewer zuzuviewer changed the title [*] 如何保证删除多个表的数据时的顺序 [*] 如何保证新增和删除多个表的数据时的顺序 Sep 14, 2024
@TommyLemon
Copy link
Collaborator

按 JSON 传参上下顺序。
go 可以用第三方的有序 map,例如
https://github.com/elliotchance/orderedmap

另外 APIJSON 后端 Golang 版也有几个,可以点亮 🌟 Star 支持下热心的作者哦~
https://github.com/search?q=apijson+language%3AGo&type=repositories&l=Go&s=stars&o=desc

@zuzuviewer
Copy link
Author

有序map是不得已的选择,我更想知道的是有没有不依靠上下顺序,而是依靠规范来决定先后执行顺序的方案

@TommyLemon
Copy link
Collaborator

TommyLemon commented Sep 19, 2024

可以新增关键词 "@sort": "key1,key5,key3..." 来指定每层的顺序,但这样前端等调用房用起来就麻烦不少,不推荐。
还是直接在后端支持有序 map 解析、前端支持有序 map 穿参更好,一次性的工作比每个请求每层都加字段工作量少很多。

@zuzuviewer
Copy link
Author

zuzuviewer commented Sep 20, 2024

好的,那就是当前没有已有的规范支持这个场景。因为对我们来说更理想的情况是符合当前语言(golang)的特性,而不是通过增加第三方库来解决,所以我会在我的服务中考虑使用“@sort”关键词来支持该场景,以下考虑看是否合适:

  1. @sort关键词不是必须的,没有则按照当前map顺序操作,有则按照sort顺序操作,这样可以保持兼容性
  2. @sort不用包含当前层级所有key,没有包含的key会排在sort包含的key后面按照当前map顺序执行

@TommyLemon
Copy link
Collaborator

go map 随机乱序,凡是要保证顺序的 key 都必须写在 @sort 里,不需要保证顺序的可省略确实更好

@TommyLemon
Copy link
Collaborator

你的目的是实现 APIJSON 的 Go 版后端 ORM 库
#38

还是做 客户端 调用 APIJSON 请求?

@zuzuviewer
Copy link
Author

都有

# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

No branches or pull requests

2 participants