普通网友 2018-08-22 09:58
浏览 38
已采纳

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

I'm trying to put an item to the Google Datastore using golang.

I'm always running into a datastore: invalid key error though and can't figure out what's wrong here. I'm using the "cloud.google.com/go/datastore" package.

First I try to get the key for the parent node (not sure this is the right way to do it, but I do end up getting a datastore.Key as parentKey).

When now creating a new key using the parentKey as parent and then trying to put the item with this newKey I get the invalid key error message.

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
", 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
", err)
    return
}

I tried it both with the NameKey and IncompleteKey but no luck with either.

I'm obviously missing something here but can't figure out what it is and how to write my item to the datastore as the child of the other node.

  • 写回答

1条回答 默认 最新

  • douwen5951 2018-08-25 00:03
    关注

    Tommy, you nailed it in your comment. You need to set the namespace on your new key. I don't see a way in the Cloud Datastore Go documentation to do this implicitly, so you'll have to do newKey.namespace = parentKey.namespace before calling Put().

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能