ios - 在 Firebase iOS SDK 中,每次删除子项时都会触发 .childAdded。我怎样才能阻止这个?

标签 ios swift firebase firebase-realtime-database

我将一些数据存储在我的 Firebase 数据库中名为“通知”的节点下。当我将事件观察器添加到“通知”并将事件类型设置为“.childAdded”时,每次将子项添加到“通知”节点以及每次从“通知”节点删除子项时都会调用完成处理程序.首先,我不明白为什么会发生这种情况,因为没有添加任何内容,只是删除了。有什么办法可以避免这种情况吗?

如果每次删除子项时我都无法避免执行 .childAdded block ,是否可以通过某种方式检测它实际上是一个子项删除事件而不是一个子项添加事件?如果事件被子删除,我想从函数中提前返回。以下是我的代码供引用:

//Event observer for notifications 
notificationsReference.queryLimited(toLast: 1).observe(.childAdded, with: {
        (snapshot) in

        //Do some stuff here only on .childAdded 
        //If the event was child deleted, do nothing 
})

最佳答案

Firebase 查询就像是数据 View 。在您的情况下,该 View 将始终显示基础集合中的最后一项。

说这是你的收藏:

item1
item2

使用此数据,您的查询最初将为 item2 触发 child_added。

现在假设你添加了一个项目:

item1
item2
item3

由于 item3 现在是集合中的最后一项,查询将为 item3 触发 child_added。

现在你删除 item3:

item1
item2

由于 item2 现在再次成为查询中的最后一项,它将为 item2 触发 child_added。

关于ios - 在 Firebase iOS SDK 中,每次删除子项时都会触发 .childAdded。我怎样才能阻止这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39736714/

相关文章:

ios - 如何在IOS上构建IOS应用程序?

ios - 分配一个大的 NSMutableArray 会导致内存不足警告吗?

iPhone 加速度计值不一致

php - 如何使用php webservice查找安装在用户手机中的应用程序版本

ios - 跨越(180 或 -180)经度时 MapBox iOS MGLPolyline 的问题

ios - ios-firebase 统一插件中的 Unity.Tasks 问题

java - "java.lang.IllegalArgumentException "尝试检索文档数据

ios - 找不到 Cocoapod 框架

ios - 使用 Firebase Analytics 事件记录 OneSignal 推送通知

javascript - 仅在托管应用程序时出现错误,但在本地主机中则不会出现错误