firebase - 有没有办法知道 Child Added 在什么上下文中被调用?特别是页面加载与其他事件

标签 firebase

这是我的场景。当通过浏览器事件页面加载后添加子项时,我想在标题中指出它。但在页面加载时,添加的子项也会被调用。

如何区分添加的初始子项与实际添加的新条目。

谢谢蒂姆

最佳答案

Firebase 故意不区分“初始”数据和"new"数据。在大多数情况下,这允许更简单的开发,因为您只需为数据编写一组逻辑,而不是同时处理初始数据情况和新数据情况。

我可以理解在这种情况下您希望如何进行区分。我不确定你到底在做什么,但如果你正在构建一个聊天应用程序,你可能希望根据最新消息的时间戳来闪烁标题,而不是根据它是否是"new"消息。如果在页面加载之前发送了一条消息,这将允许标题在页面加载时闪烁,这可能是可取的。在其他一些情况下,您可能实际上想要闪烁未读数据的标题,并且您可能需要考虑将子项标记为“已读”,并仅针对未显示“已读”位的子项闪烁标题。这将使事情能够在页面刷新之间无缝工作。

如果您绝对需要知道"new"数据何时出现,您可以尝试使用“once”和“value”事件类型来获取数据,然后使用“on”和 startAt 查询和“child_added” "之后显示新数据的事件类型。它看起来像这样:

var data = new Firebase(...);
data.once("value", function(d) {
  //TODO: display initial state...

  data.startAt(null, <last id in snapshot>).on("child_added", function(newMessSnapshot) {
    //TODO: render new child and flash title bar.
  }
}

或者,如果您想以真正简单的方式做到这一点,您可以设置一个计时器,这样标题就不会在页面加载的前 N ​​秒内收到的任何消息闪烁。

希望有帮助!

关于firebase - 有没有办法知道 Child Added 在什么上下文中被调用?特别是页面加载与其他事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12850789/

相关文章:

javascript - 在哪里托管用于分发的 javascript 闭源前端库?

android - 当用户单击按钮时,我如何通过 android 应用程序永远增加 firebase 数据库中的计数器

firebase - 对 firebase-storage 可下载 url 执行身份验证

java - 如何仅在 Firebase 数据库发生更改时调用通知?

android - 使用 Android 的 Algolia 和 Cloud Firestore?

ios - 使用 Firebase 和 OneSignal 推送通知

android - firebase 中可以有包含搜索查询吗?

angular - 引用错误: IDBIndex is not defined in angular universal app

javascript - Firebase .limitToFirst() 不起作用

ios - Firebase 商店 : trying to store to local file gives an error