Google应用引擎+ Go +数据存储+添加/更新/删除记录

时间:2013-11-11 04:54:26

标签: google-app-engine go google-cloud-datastore

以下是我如何将记录插入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”包含所有记录,它们对应的键是什么?所以如果我愿意,我可以做更新。

2 个答案:

答案 0 :(得分:4)

GetAll返回一个键数组,如果出现错误,则返回Error。只需迭代键。     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

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

答案 1 :(得分:4)

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

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

现在我们有一个数组u,其中所有条目都与过滤器id = 4be...匹配,在这种情况下,您只有一个条目,我们有一个键数组key,该条目的相应密钥。

更新条目:

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

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

删除条目:

datastore.Delete(context,key[0])