Google数据存储区无效密钥错误

时间:2018-08-22 09:58:05

标签: go google-cloud-datastore google-cloud-firestore

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

尽管我总是遇到datastore: invalid key错误,但无法弄清楚这里出了什么问题。我正在使用"cloud.google.com/go/datastore"软件包。

首先,我尝试获取父节点的密钥(不确定这样做是否正确,但是最终得到的datastore.KeyparentKey)。

现在使用parentKey作为父级创建新密钥,然后尝试使用此putnewKey项时,我收到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都尝试过,但是两者都没有运气。

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

1 个答案:

答案 0 :(得分:1)

Tommy,您在评论中添加了它。您需要在新键上设置名称空间。我没有看到Cloud Datastore Go documentation中隐式地执行此操作的方法,因此在调用Put()之前必须做newKey.namespace = parentKey.namespace。