gpt4 book ai didi

google-app-engine - 如何使用 Go 将 key 存储在数据存储对象中?

转载 作者:IT王子 更新时间:2023-10-29 02:17:20 25 4
gpt4 key购买 nike

我正在尝试放置一个*位置键

type Location struct 
City, State, Country string
}

在乐队中

type Band struct {
Name string
LocationId *datastore.Key
Albums []Album
}

当我第一次创建一个 Location,添加键,然后尝试检索 Location 值时,字符串全部为空。如果我随后添加一个新 Band,我创建的位置会正常显示,并且可以在新 Band 中使用该位置。我使用的是不完整的 key :

func AddLocation(value Location, rq *http.Request) (*datastore.Key, error) {
c := appengine.NewContext(rq)
key := datastore.NewIncompleteKey(c, config.LOCATION_TYPE, nil)
_, err := datastore.Put(c, key, &value)

return key, err
}

使用现有位置如下:

case "existing":
rawId := rq.FormValue("location_id")
q := strings.Split(rawId, ",")
x := q[1]
id_int, e := strconv.ParseInt(x, 10, 64)
if e != nil {
message = e.Error()
}
locationId = datastore.NewKey(c, config.LOCATION_TYPE, "", id_int, nil)
// message = "not implemented yet"
break

使用原始 Put 中的 key 似乎不起作用,所以我求助于:

case "new":
location := model.Location{rq.FormValue("city"), rq.FormValue("state"), rq.FormValue("country")}
var err error
_, err = model.AddLocation(location, rq)
if err != nil {
message = "Location add: " + err.Error()
}
q := datastore.NewQuery(config.LOCATION_TYPE).Filter("City =", location.City).
Filter("State =", location.State).Filter("Country =", location.Country).
KeysOnly()
keys, err := q.GetAll(c, nil)
if err != nil {
message = "Location add: " + err.Error()
}
var k *datastore.Key
for _, key := range keys {
k = key
break
}
locationId = k
break

那也行不通。我没有得到什么?

最佳答案

当您使用不完整的键调用datastore.Put 时,键的id 没有填写。返回的键有它。您使用 _ 忽略了 datastore.Put 的返回值。

您的 AddLocation 函数应如下所示:

func AddLocation(value Location, rq *http.Request) (*datastore.Key, error) {
c := appengine.NewContext(rq)
key := datastore.NewIncompleteKey(c, config.LOCATION_TYPE, nil)
// this line updates the key with accurate information
key, err := datastore.Put(c, key, &value)

return key, err
}

关于google-app-engine - 如何使用 Go 将 key 存储在数据存储对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23500605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com