【问题标题】:Firebase get wrong data when offlineFirebase 离线时获取错误数据
【发布时间】:2020-10-28 22:40:21
【问题描述】:

我在 Firebase 中有一个名为 ultimaRefloteActual 的 int。稍后可以看到,它的值是 1054。但是,当用户由于某种原因下线时,Firebase 会为其分配一个值 1(有时)。为什么?

我认为我获取数据的程序不够可信。我该如何解决?以后尝试用int,以后改成String,还是一样的错误。

Future<String> cargarUltimaRefLoteActual( String idEmpresa) async {
  String ultimaRef;
  Query resp = db.child('datos/ultimaRefLoteActual');
  final snapshot = await resp.once();
  if (snapshot.value == null) return '';
  ultimaRef = snapshot.value.toString();
  print(ultimaRef)
  return ultimaRef;
}

如果缓存中没有值,我希望结果为 null,但不是错误的数据。如何确保检索到正确的数据?

【问题讨论】:

    标签: flutter firebase-realtime-database


    【解决方案1】:

    如果您启用了磁盘持久性,我怀疑 1 可能来自本地缓存。如果是这种情况,并且您不想获得过时的值,您有两种选择:

    1. 不要使用磁盘持久性。
    2. 通过在db.child('datos/ultimaRefLoteActual') 上调用keepSynced 强制缓存保持最新状态,然后应用启动。

    【讨论】:

    • 谢谢@puf。我不知道应用程序启动时的完整路径。我可以在任何其他地方使用它,对吗?
    • 当然。它可以在任何地方工作。在启动时这样做更习惯,因为:1)每次运行应用程序只需执行一次,2)每次运行应用程序都需要重做。
    猜你喜欢
    • 2021-12-10
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多