我正在尝试使用 golang 将项目放入 Google 数据存储区。虽然我总是遇到datastore: invalid key错误,但无法弄清楚这里出了什么问题。我正在使用这个"cloud.google.com/go/datastore"包。首先,我尝试获取父节点的密钥(不确定这是正确的方法,但我最终得到了一个datastore.Keyas parentKey)。现在,当使用 as parent 创建一个新密钥parentKey,然后尝试使用put该项目时,newKey我收到了invalid key错误消息。q := datastore.NewQuery("Supplier") .Namespace("inventory") .Filter("Name =", "supplier-01") .Limit(1)var s []supplierparentKey, err := client.GetAll(ctx, q, &s)if err != nil || len(parentKey) < 1 { fmt.Printf("could not find parent key: %v\n", err) return}newKey := datastore.IncompleteKey("InventoryItem", parentKey[0])//newKey := datastore.NameKey("InventoryItem", item.Name, parentKey[0])if _, err := client.Put(ctx, newKey, &item); err != nil { fmt.Printf("could not save item: %v\n", err) return}NameKey我用和都试过了,IncompleteKey但都没有运气。我显然在这里遗漏了一些东西,但无法弄清楚它是什么以及如何将我的项目作为另一个节点的子节点写入数据存储区。
1 回答
SMILET
TA贡献1796条经验 获得超4个赞
汤米,你在评论中指出了这一点。您需要在新密钥上设置名称空间。我在Cloud Datastore Go 文档中看不到隐式执行此操作的方法,因此您必须在调用 Put() 之前执行 newKey.namespace = parentKey.namespace。
- 1 回答
- 0 关注
- 69 浏览
添加回答
举报
0/150
提交
取消