Firebase 给出“maxretry”错误

问题描述 投票:0回答:2

我们使用 Firebase 作为我们移动应用的后端。我们的一些用户偶尔会收到错误“maxretry”,因为事务写入具有单个数值的路径。据我所知,我们没有多个用户或连接,也没有对同一路径的多次写入。可能是什么原因造成的?

我怀疑这是由于使用具有许多小数位的浮点值引起的。这个错误在我本地发生过一次,我能够通过将精度限制到小数点后两位来解决它。可以这样吗

-阿尔伯特

编辑:

这是导致此问题的代码:

return fireRef.child(fbPath).transaction(function(originalVal) {
  return func(originalVal, by_value);
}, _.noop, false)

在这种情况下,

func
看起来像这样:

function(originalVal, val) {
  return val + (originalVal || 0);
}
firebase firebase-realtime-database
2个回答
5
投票

即使将精度限制为小数点后两位,问题仍然存在(每隔一段时间就会出现

maxretry
错误)。

看起来使用 Firebase 事务更新值时根本不应该使用浮点类型。

我转而使用整数,并且不再遇到问题。


0
投票

我在 2024 年也遇到了这个问题。令人非常失望的是,像 google 这样的团队在 7 年后还没有修复它。为什么你提供这样的功能,但它甚至不能按应有的方式工作,而且会产生大问题。你不知道我的生意受到这一问题的影响有多大。

假设如果我想从 77.13 中减去 0.9,那么服务器值就变成 76.22999999999999。为什么不四舍五入呢。所以在下一个操作中我想扣除 0.84 它会抛出 maxretry 错误。噢,来吧,解决你为什么会犯错误。因此,许多交易得以实现。

© www.soinside.com 2019 - 2024. All rights reserved.