我試圖解決的問題是:我有一個每天生成實體的服務。其中一些實體將是新的,有些實體已經在以前的運行中找到。我需要:使數據庫保持最新,即包含所有已找到的實體能夠判斷何時找到新實體。每個實體都包含一個時間戳,所以如果我能確保實體沒有被過度覆蓋,這應該不會太難(我只會在數據庫中查詢今天找到的實體,這些實體應該是新的實體),所以這就是我試圖做的。生成的數據如下所示[{"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
}
添加回答
舉報
0/150
提交
取消