- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
今天在使用 Firebase 进行更多编程时,我发现自己希望获得以下几个功能:
1) 合并集:
假设我有一个 firebase ref
,其值为 {a:1,b:2,c:3}
。
如果我执行类似 ref.set({a:-1,b:-2})
的操作,新值将(不出所料)为 {a:-1,b: -2}
。
相反,想象一下 ref.mergeSet({a:-1,b:-2})
其结果是 ref 的值为 {a:-1, b:-2,c:3}
.
现在,我意识到我可以做类似 ref.child("a").set(-1)
和 ref.child("b").set(- 2)
来实现此结果,但至少在某些情况下,我更愿意只调用一次对我的 .on()
处理程序的调用。
这就是我的第二个想法。
2) 批量设置:
在我的应用程序中,我希望有一种方法可以强制对 .set
进行任意数量的调用,从而仅导致其他客户端对 .on
进行一次调用。像这样的东西:
ref.startBatch()
ref.child("a").set(1)
ref.child("b").set(2)
....
ref.endBatch()
在批处理模式下,.set
不会导致对 .on
的调用,而是对 .on
的最小调用次数> 都是调用 .endBatch
的结果。
我承认这些想法还很新生,如果它们与 Firebase 现有的架构特征相冲突,我也不会感到惊讶,但我想无论如何我都会分享它们。我发现在使用 Firebase 时,我必须花费比预期更多的时间来确保客户端之间的一致性。
再次感谢,继续努力。
最佳答案
更新:我们添加了新的 update Firebase Web 客户端的 () 方法以及对 REST API 的 PATCH 支持,它允许您在特定位置原子地修改多个同级,同时保持其他同级不变。这就是您所描述的“mergeSet”,可以按如下方式使用:
ref.update({a: -1, b: -2});
这将更新“a”和“b”,但保持“c”不变。
<小时/>旧答案
感谢您提出详细的功能请求!我们很想了解更多有关您的用例以及这些原语如何帮助您的信息。如果您愿意分享更多详细信息,请发送电子邮件至 support@firebase.com,我们可以深入研究您的场景。
为了回答您的问题,我们没有这些功能的主要原因与我们的架构以及我们试图维护的性能/一致性保证有关。不要太深入,但如果您想象您的 Firebase 数据分布在许多服务器上,那么我们在修改树中靠近的数据时比修改远处的数据时更容易获得更强的保证(原子性、顺序等)离开。因此,通过将这些保证限制为可以用单个 set() 调用替换的数据,我们将您推向一个在 Firebase 架构中表现良好的方向。
在某些情况下,您只需重新组织树就可以大致得到您想要的结果。例如,如果您知道总是希望将“a”和“b”设置在一起,则可以将它们放在共同的“ab”父项下,然后执行 ref.child('ab').set({a: -1, b:-2});
,这不会影响“c”子级。
就像我说的,我们很想了解更多有关您的场景的信息。我们处于测试阶段,以便我们可以向开发人员了解他们如何使用 API 以及它的不足之处! support@firebase.com :-)
关于firebase - Firebase 中是否有(或考虑过)类似 'merge' 或 'batch' 设置的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11092577/
我有一个 if 语句,如下所示 if (not(fullpath.lower().endswith(".pdf")) or not (fullpath.lower().endswith(tup
然而,在 PHP 中,可以: only appears if $foo is true. only appears if $foo is false. 在 Javascript 中,能否在一个脚
XML有很多好处。它既是机器可读的,也是人类可读的,它具有标准化的格式,并且用途广泛。 它也有一些缺点。它是冗长的,不是传输大量数据的非常有效的方法。 XML最有用的方面之一是模式语言。使用模式,您可
由于长期使用 SQL2000,我并没有真正深入了解公用表表达式。 我给出的答案here (#4025380)和 here (#4018793)违背了潮流,因为他们没有使用 CTE。 我很欣赏它们对于递
我有一个应用程序: void deleteObj(id){ MyObj obj = getObjById(id); if (obj == null) { throw n
我的代码如下。可能我以类似的方式多次使用它,即简单地说,我正在以这种方式管理 session 和事务: List users= null; try{ sess
在开发J2EE Web应用程序时,我通常会按以下方式组织我的包结构 com.jameselsey.. 控制器-控制器/操作转到此处 服务-事务服务类,由控制器调用 域-应用程序使用的我的域类/对象 D
这更多是出于好奇而不是任何重要问题,但我只是想知道 memmove 中的以下片段文档: Copying takes place as if an intermediate buffer were us
路径压缩涉及将根指定为路径上每个节点的新父节点——这可能会降低根的等级,并可能降低路径上所有节点的等级。有办法解决这个问题吗?有必要处理这个吗?或者,也许可以将等级视为树高的上限而不是确切的高度? 谢
我有两个类,A 和 B。A 是 B 的父类,我有一个函数接收指向 A 类型类的指针,检查它是否也是 B 类型,如果是将调用另一个函数,该函数接受一个指向类型 B 的类的指针。当函数调用另一个函数时,我
有没有办法让 valgrind 使用多个处理器? 我正在使用 valgrind 的 callgrind 进行一些瓶颈分析,并注意到我的应用程序中的资源使用行为与在 valgrind/callgrind
假设我们要使用 ReaderT [(a,b)]超过 Maybe monad,然后我们想在列表中进行查找。 现在,一个简单且不常见的方法是: 第一种可能性 find a = ReaderT (looku
我的代码似乎有问题。我需要说的是: if ( $('html').attr('lang').val() == 'fr-FR' ) { // do this } else { // do
根据this文章(2018 年 4 月)AKS 在可用性集中运行时能够跨故障域智能放置 Pod,但尚不考虑更新域。很快就会使用更新域将 Pod 放入 AKS 中吗? 最佳答案 当您设置集群时,它已经自
course | section | type comart2 : bsit201 : lec comart2 :
我正在开发自己的 SDK,而这又依赖于某些第 3 方 SDK。例如 - OkHttp。 我应该将 OkHttp 添加到我的 build.gradle 中,还是让我的 SDK 用户包含它?在这种情况下,
随着 Rust 越来越充实,我对它的兴趣开始激起。我喜欢它支持代数数据类型,尤其是那些匹配的事实,但是对其他功能习语有什么想法吗? 例如标准库中是否有标准过滤器/映射/归约函数的集合,更重要的是,您能
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 9 年前。 Improve
我一直在研究 PHP 中的对象。我见过的所有示例甚至在它们自己的对象上都使用了对象构造函数。 PHP 会强制您这样做吗?如果是,为什么? 例如: firstname = $firstname;
...比关联数组? 关联数组会占用更多内存吗? $arr = array(1, 1, 1); $arr[10] = 1; $arr[] = 1; // <- index is 11; does the
我是一名优秀的程序员,十分优秀!