当前位置: 首页 > 知识库问答 >
问题:

Firebase事务MutableData显示为零

燕成双
2023-03-14
@posts
   @postId_abc
      -date: ....
      -views: 0
let viewsPath = Database.database().reference()
                   .child("posts")
                   .child("postId_abc")
                   .child("views")

viewsPath.runTransactionBlock({ (mutableData: MutableData) -> TransactionResult in

    let doesViewsExist = mutableData.value as? Int // I also tried Double
    if doesViewsExist == nil {
                        
        return TransactionResult.abort() // "views" value is 0
    }

    // ...
}

共有1个答案

东方辉
2023-03-14

这是expect行为。当您开始一个事务时,SDK立即调用事务处理程序,用它对节点当前值的最佳猜测。最常见的猜测是nil,因为客户机还没有更好的了解。

因此,不必中止事务,而是在可变数据上设置另一个值,例如0。该值是多少并不重要,因为无论如何都会重试事务。

有关这方面的更多背景信息,请参见:

    null
 类似资料:
  • 问题内容: 我为Spring配置了事务支持。有什么方法可以记录交易记录,只是为了确保我正确设置了所有内容?在日志中显示是查看正在发生的事情的好方法。 问题答案: 在您的文档中(对于其他记录器或log4j的xml格式,请检查文档) 根据您的事务管理器,您可以设置spring框架的日志记录级别,以便为您提供有关事务的更多信息。例如,如果使用,您可以设置 (这是您的交易经理的软件包),以及 如果还不够,

  • 我正在从旧的谷歌分析迁移到Firebase分析,现在我正在使用以下内容跟踪屏幕: 还尝试用这个: 我用这个跟踪事件: 我正在测试打开一些屏幕并传递其名称的应用程序,并且我还按了一些按钮来执行我显示的事件跟踪代码。 第一个问题是,在firebase面板中,我找不到“test command”事件...不知道我应该在哪里找到它,但我找不到它。 第二个问题是我可以看到我用于打开屏幕的活动的“屏幕类”,它

  • 应用程序运行良好...只是数据没有出现...我已经添加了sha用户电子邮件显示在登录后,在登录活动中我已经添加了 但是在实时数据库数据不显示以防万一…我也等了半个小时,尝试了所有的东西…网络也不错。数据库中的数据库规则的数据库图片 mainActivity.java//不能用于单个子级,即firebaseDatabase.getInstance().getReference().child(“aj

  • 当需要从数据库中返回一些数据,然后使用它进行一些计算并将其存储回来时,则需要使用事务性数据。 下面来看看运动员列表中的运动员。 我们要检索属性,添加年龄增加岁并将其返还给Firebase。 从集合中检索年龄,然后可以使用事务方法。 我们将获得当前的年龄,增加一年,并更新集合。 如果运行这个代码,可以看到年龄值更新为。如下图所示 -