在 Aerospike 中更新特定 bin/column 而不是 Table/set 中的所有内容
Update specific bin/column and not all in Table/set in Aerospike
我有以下结构 -
type User struct {
ID string `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
Password string `json:"passwprd"`
Confirmed int `json:"confirmed"`
ConfirmCode string `json:"confirmcode"`
CreatedAt time.Time
UpdatedAt time.Time
}
现在,每当我插入数据时,一切都很好,但是每当我更新特定的 bin Confirmed
& ConfirmCode
时,我的所有其他数据也被替换为空白值。
这是代码,我正在使用它进行更新 -
t := time.Now()
u := User{
Confirmed: 1,
UpdatedAt: t,
}
key, err := as.NewKey("foobar", "users", "1")
if err != nil {
ctx.StatusCode(iris.StatusBadRequest)
ctx.JSON(map[string]string{"error": "Can't update key! Try again " + err.Error()})
return
}
err = client.PutObject(nil, key, &u)
if err != nil {
ctx.StatusCode(iris.StatusBadRequest)
ctx.JSON(map[string]string{"error": "Can't Update object! Try again" + err.Error()})
return
}
如您所见,在执行更新时,我只提供了结构的 2 个字段。
执行此操作,它会删除所有旧的现有数据,除了上面用于更新的 2 个。
在 Aerospike 中进行更新时是否需要再次提供 "Old value"?
查看 RecordExistsAction 策略:https://godoc.org/github.com/aerospike/aerospike-client-go#RecordExistsAction
您应该可以使用 "update or insert" 的 UPDATE(默认),除非您用 REPLACE 覆盖它?
我有以下结构 -
type User struct {
ID string `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
Password string `json:"passwprd"`
Confirmed int `json:"confirmed"`
ConfirmCode string `json:"confirmcode"`
CreatedAt time.Time
UpdatedAt time.Time
}
现在,每当我插入数据时,一切都很好,但是每当我更新特定的 bin Confirmed
& ConfirmCode
时,我的所有其他数据也被替换为空白值。
这是代码,我正在使用它进行更新 -
t := time.Now()
u := User{
Confirmed: 1,
UpdatedAt: t,
}
key, err := as.NewKey("foobar", "users", "1")
if err != nil {
ctx.StatusCode(iris.StatusBadRequest)
ctx.JSON(map[string]string{"error": "Can't update key! Try again " + err.Error()})
return
}
err = client.PutObject(nil, key, &u)
if err != nil {
ctx.StatusCode(iris.StatusBadRequest)
ctx.JSON(map[string]string{"error": "Can't Update object! Try again" + err.Error()})
return
}
如您所见,在执行更新时,我只提供了结构的 2 个字段。
执行此操作,它会删除所有旧的现有数据,除了上面用于更新的 2 个。
在 Aerospike 中进行更新时是否需要再次提供 "Old value"?
查看 RecordExistsAction 策略:https://godoc.org/github.com/aerospike/aerospike-client-go#RecordExistsAction
您应该可以使用 "update or insert" 的 UPDATE(默认),除非您用 REPLACE 覆盖它?