1

这是我将记录插入到 DataStore 的方法

type User struct {
    Id string
    Name string
    Pass string
    Email string
}

user := User {
    Id:     "4be0f045-6ce8-4d3e-751e-15bd84f2b925",
    Name:   "test",
    Pass:   "test",
    Email:  "",
}

datastore.Put(context, datastore.NewIncompleteKey(context, "User", nil), &user)

如何更新或删除记录?我看到的所有例子都使用了一些“关键”。我需要简单的东西,比如(伪代码):

user.Email = "new@email.com"
filter := string.Format("Id='{0}'", "4be0f045-6ce8-4d3e-751e-15bd84f2b925");
datastore.Put(context, "User", user, filter ), &user)

另外,可能与我这样做后如何获取密钥有关

querySize := 1000
query := datastore.NewQuery("User").Limit(querySize)
queryResult := make([]User, 0, querySize)
query.GetAll(context, &queryResult)

“queryResult”包含所有记录,它们对应的键是什么?所以如果我愿意,我可以进行更新。

4

2 回答 2

4

为了更新或删除数据存储条目,我们需要相关条目的密钥。

query := datastore.NewQuery("User").Filter("ID =", "4be0f045-6ce8-4d3e-751e-15bd84f2b925")
var u []User
key, err := query.GetAll(context, &u)

现在我们有一个数组u,其中包含与过滤器匹配的所有条目id = 4be...,在这种情况下 u 只有一个条目,并且我们有一个键数组 ,以及key条目的相应键。

要更新条目:

u[0].Email = "new.email@org"
datastore.Put(context,key[0],&u[0])

这将为您的第一个条目分配新电子邮件并将更改的条目存储在数据存储中。

要删除条目:

datastore.Delete(context,key[0])
于 2014-04-12T10:59:29.173 回答
4

GetAll 返回一个键数组,如果出现错误,则返回一个错误。只需遍历键。 https://developers.google.com/appengine/docs/go/datastore/reference#Query.GetAll

您可以使用 Delete 而不是 Put 来删除记录。这是解释所有操作的 Go 的 App Engine 数据存储参考: https ://developers.google.com/appengine/docs/go/datastore/reference

看看谷歌的这个例子。它显示了如何获取密钥以及更新或删除记录: https ://github.com/GoogleCloudPlatform/appengine-angular-gotodos/blob/master/gotodos.go

于 2013-11-11T09:54:59.670 回答