登录
首页 >  Golang >  Go问答

Firestore 批处理 - 需要超过 1 次写入的操作

来源:stackoverflow

时间:2024-04-19 12:12:35 434浏览 收藏

大家好,今天本人给大家带来文章《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 次批量写入操作? 还有人可以建议解决该问题的方法吗?


正确答案


所谓的字段转换操作确实可能需要在服务器上执行多个写入操作,从而减少了可以在批量写入或事务中执行的逻辑写入操作的容量。如果我没记错的话,在这种情况下,您只需为一次写入操作付费

从我之前给what is "field transformations" in Firestore?的答案来看,可用的field transform operations似乎是setToServerValue(您使用的服务器时间戳),incrementappendMissingElementsremoveAllFromArray,zqbcz qbmaximum 和 minimum。我不确定最后两个是否已在任何 SDK 上公开。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>