【发布时间】:2018-03-31 05:07:31
【问题描述】:
我有一个到 mysql 表的结构映射,如下所示,并且想要更新在 PUT 请求有效负载中发送的字段
type Notification struct {
Id int64 `json:"id"`
Type NotificationType
Subject string `json:"confidence"`
Body string `json:"body"`
CreatedDate time.Time `json:"created_dt"`
CreatedBy int64 `json:"created_by"`
ParentNotification int64 `json:"parent_id"`
IsExpired bool `json:"expired"`
}
目前我要求所有字段都包含在有效负载中,即使数据没有更改,并使用带有 db.Exec(query) 语句的查询更新所有列。
有什么方法可以让客户只包含在有效负载中更改的字段并仅更新这些字段?
{
"body" : "new body"
"subject" : "new subject"
}
我正在数据库端使用以下包。
"database/sql"
_ "github.com/go-sql-driver/mysql"
【问题讨论】:
-
“要求客户端仅包含有效负载中更改的字段并仅更新这些字段”是什么意思?您想要一种发送请求的方法还是如何处理请求?
-
客户端程序可以将一个字段作为有效负载发送,也可以将所有字段作为有效负载发送,并且在 htt 处理程序中我需要更新他们发送的字段。如果有效负载是 {"body" : "newbody"} -那么 query = "update tbl set body="newbody" where id = id 。如果有效负载是 {"subject" : "new", "body" : "new"}然后查询 =“更新 tbl 设置主题 =“新”,身体 =“新”,其中 id = 1
-
您只需将负载解码为 Notification 结构并根据您的应用逻辑验证此结构,然后使用非空字段相应地更新数据库。