golang的gorm怎么合并前端传过来的对象数据?
比如用restful标准来新增改查gorm的话
如主子表的数据, 怎么做到前端只传需要变更的数据过来,后端合并起来再保存 ?
主要是想解决通过主表调用用一个restful接口同时更新主表和子表的数据(需要在同一个事务里执行的那种),
但gorm的话,只能用全量更新(db.save)
部分更新的话,会导致子表数据只剩下最后一次传的那些字段, db.updates部分更新不支持子表部分更新
如果有个主子表的订单, 两个表各有10多个字段。
目前想更新的订单有一条主表记录, 三条子表记录
但传值时只想传需要修改的字段过去。
比如, 修改子表某一记录的状态字段,并把主表的状态和订单时间更新一下,同时删除一个子表记录
{
"id": 2,
"orderTime": "2019-01-09", // 更新
"orderDetails": [
{
"id": 3,
"status": 3 // 更新
},
{
"id": 4,
"deleteFlag": "Y"// 删除
}
]
}
PS: 这是一个通用的restful接口实现,可以通过这接口crud所有的注册过的model
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
最后的解决方法:
循环每个字段,找到Relationship.Kind不为空的字段
这样,在同一次请求,就可以对子表同时做新增, 修改,删除,操作了
PS: 欢迎使用本公司开发的go框架。KUU - https://github.com/kuuland/kuu
你的意思是不是说两个表是主外键关系。
restful接口需要请求两次分别把主的数据和外键表的数据发过来,你需要合并后事物保存吗?
如果是,你需要将两次请求的数据预先保存到全局变量里面,之后收集齐了再
gorm文档里有的
.Where(你的条件).Updates