Google 数据存储无效密钥错误

Google Datastore invalid key error

我正在尝试使用 golang 将项目放入 Google 数据存储区。

虽然我总是 运行 陷入 datastore: invalid key 错误,但我无法弄清楚这里出了什么问题。我正在使用 "cloud.google.com/go/datastore" 包。

首先,我尝试获取父节点的密钥(不确定这是正确的方法,但我最终得到了 datastore.Key 作为 parentKey)。

当现在使用 parentKey 作为父项创建新密钥,然后尝试使用此 newKey put 项目时,我收到 invalid key 错误消息。

q := datastore.NewQuery("Supplier")
              .Namespace("inventory")
              .Filter("Name =", "supplier-01")
              .Limit(1)
var s []supplier
parentKey, 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
}

我用 NameKeyIncompleteKey 都试过了,但都没有成功。

我显然在这里遗漏了一些东西,但无法弄清楚它是什么以及如何将我的项目作为另一个节点的子节点写入数据存储。

Tommy,您在评论中说到了。您需要在新密钥上设置名称空间。我在 Cloud Datastore Go documentation 中看不到隐式执行此操作的方法,因此您必须在调用 Put().

之前执行 newKey.namespace = parentKey.namespace