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

我试图解决的问题是:我有一个每天生成实体的服务。其中一些实体将是新的,有些实体已经在以前的运行中找到。

我需要:

  1. 使数据库保持最新,即包含所有已找到的实体

  2. 能够判断何时找到新实体。每个实体都包含一个时间戳,所以如果我能确保实体没有被过度覆盖,这应该不会太难(我只会在数据库中查询今天找到的实体,这些实体应该是新的实体),所以这就是我试图做的。

生成的数据如下所示

[

{"key": "a",

"foo": "bar",

"timestamp": "EXMAPLE_TIMESTAMP" },

{"key": "b",

"foo": "baz",

"timestamp": "EXMAPLE_TIMESTAMP" }

注: 实体具有唯一的数据存储密钥


编辑:我尝试使用,但如果实体的键已经存在,它只会覆盖实体,这会导致时间戳更新,即使实际内容相同。Put()


慕标5832272
浏览 58回答 1
1回答

呼啦一阵风

仅当键不存在时,才使用插入突变来保存实体。_, 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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java