为了账号安全,请及时绑定邮箱和手机立即绑定

仅当密钥不存在于 Google 数据存储中时,才写入实体

仅当密钥不存在于 Google 数据存储中时,才写入实体

慕标5832272 2022-09-12 16:22:01
我试图解决的问题是:我有一个每天生成实体的服务。其中一些实体将是新的,有些实体已经在以前的运行中找到。我需要:使数据库保持最新,即包含所有已找到的实体能够判断何时找到新实体。每个实体都包含一个时间戳,所以如果我能确保实体没有被过度覆盖,这应该不会太难(我只会在数据库中查询今天找到的实体,这些实体应该是新的实体),所以这就是我试图做的。生成的数据如下所示[{"key": "a","foo": "bar","timestamp": "EXMAPLE_TIMESTAMP" },{"key": "b","foo": "baz","timestamp": "EXMAPLE_TIMESTAMP" }] 注: 实体具有唯一的数据存储密钥编辑:我尝试使用,但如果实体的键已经存在,它只会覆盖实体,这会导致时间戳更新,即使实际内容相同。Put()
查看完整描述

1 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

仅当键不存在时,才使用插入突变来保存实体。


_, err = client.Mutate(ctx, datastore.NewInsert(key, value))

if merr, ok := err.(datastore.MultiError); ok && merr[0] == codes.AlreadyExists {

    err = nil

}

if err != nil {

    // handle error

}


查看完整回答
反对 回复 2022-09-12
  • 1 回答
  • 0 关注
  • 57 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信