当前位置: > > > > Firestore 批处理 – 需要超过 1 次写入的操作
来源:stackoverflow
2024-04-19 12:12:35
0浏览
收藏
大家好,今天本人给大家带来文章《Firestore 批处理 – 需要超过 1 次写入的操作》,文中内容主要涉及到,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!
问题内容
tl;dr – 那里有一些约定/有效负载/操作,这需要进行超过 1 次批量写入。
我发现,当我将 set
操作添加到 batch
时,对于使用 firestore servertimstamp
功能的对象,它会花费 2 次写入操作,而不是 1 次。 找不到任何相关文档。 问题是,如果您在代码中使用本地计数器包装 firestore 批处理,为避免达到 500 阈值,您可能会错误计算批处理大小。
在我的示例中,我使用 golang firestore sdk(但我确实相信这个问题对于所有其他 sdk 来说都很常见,因为它源自 firestore 基本机制)
batch.Set(ctx, docRef, struct { LastUpdate time.Time `firestore:"lastUpdate,serverTimestamp"` }{}, firestore.MergeAll) --> batch.writes was increased by 2 writes rather than 1
我的问题是 – 是否有任何其他特殊的 firestore 值/操作等可能也需要进行超过 1 次批量写入操作? 还有人可以建议解决该问题的方法吗?
正确答案
所谓的字段转换操作确实可能需要在服务器上执行多个写入操作,从而减少了可以在批量写入或事务中执行的逻辑写入操作的容量。如果我没记错的话,在这种情况下,您只需为一次写入操作付费。
从我之前给的答案来看,可用的似乎是setToServerValue
(您使用的服务器时间戳),increment
,appendMissingElements
,removeAllFromArray
,zqbcz qbmaximum 和 minimum
。我不确定最后两个是否已在任何 SDK 上公开。
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持!更多关于Golang的相关知识,也可关注公众号。