更新特定的bin/列,而不是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
}

现在,每当我插入数据时,一切都很好,但每当我更新特定的binConfirmed&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中进行更新时,我是否需要再次提供"旧值"?

查看RecordExistsAction策略:https://godoc.org/github.com/aerospike/aerospike-client-go#RecordExistsAction

您应该能够使用UPDATE(默认(,即"更新或插入",除非您用REPLACE覆盖了它?

最新更新