Firebase实时数据库是否有任何“生命周期”事件?

时间:2018-09-09 19:08:13

标签: javascript firebase firebase-realtime-database

在使用Firebase(实时数据库)时,我想了解有关数据库中对象的以下信息:

  • 路径上是否存在对象
  • 在路径上创建对象时
  • 当物体在路径上被破坏

我可以找出一些针对这些的技巧。例如:

  • 订阅on('value')事件并下载整个(通常是巨大的)对象。
  • 为数据库中的每个对象创建一个单独的“标志”值,这些值在创建和销毁对象时会被修改。
  • 在对象内部具有特定寿命的特定字段上监听“ child_added”,“ child_removed”等。

这些可以在某些特定情况下完成工作,但是相当武断,而且扩展性不好。

有没有一种方法可以实现上述目的而不必下载整个对象或在数据库中创建一堆“簿记”条目?

2 个答案:

答案 0 :(得分:1)

复制数据并向数据库添加其他数据以满足您的预期查询是很常见的,而不需要访问太多数据。没有任何隐藏或秘密的操作-您在文档中看到的是您的工具集。听起来您已经在做正确的事情。

答案 1 :(得分:1)

假设使用Web SDK(浏览器角度),则实时更新(.on)是获取此类数据的正确方法。数据不应太大-称为“实时数据库” bcs,它不打算存储较大的文件类型,例如图像和视频。

Listen for value events

var starCountRef = firebase.database().ref('posts/' + postId + '/starCount');
starCountRef.on('value', function(snapshot) {
  updateStarCount(postElement, snapshot.val());
});