0

看到firebase添加了功能,所以我一直在尝试使用它们..

以下是我的数据的结构:

-feed1
  --child count = 0
  --childs
   ---1
   ---2
   ---3
-feed2
  --child count = 0
  --childs
   ---1
   ---2
   ---3
-feed3
  --child count = 0
  --childs
   ---1
   ---2
   ---3

我的目标是让每个提要对象能够计算每个“孩子”字段有多少个孩子,并更新每个孩子有多少个孩子计数字段。

这是我到目前为止所拥有的。我通过添加一个子对象对其进行了测试,但这似乎并没有触发该功能。我怀疑它与它的通配符元素有关,但无法真正弄清楚如何去做

var functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.countParent = functions.database.ref('{schoolid}/childs').onWrite(event => {
  return event.data.ref.parent().child('childCount').set(event.data.numChildren());
});

有任何想法吗?

4

1 回答 1

1

检查您在 Firebase 控制台中的错误日志,我敢打赌您会在那里看到一个错误。

Parent 是一个属性,而不是一个函数

即使您修复了函数中的错误,它也容易出错。numChildren()效率低下,您应该使用事务。

我从Github 上的 Child Count 示例中为您的模式修改了工作代码:

exports.countParent = functions.database.ref("{schoolid}/childs/{childid}").onWrite(event => {
  var collectionRef = event.data.ref.parent;
  var countRef = collectionRef.parent.child('childCount');

  return countRef.transaction(function(current) {
    if (event.data.exists() && !event.data.previous.exists()) {
      return (current || 0) + 1;
    }
    else if (!event.data.exists() && event.data.previous.exists()) {
      return (current || 0) - 1;
    }
  });
});

这应该是一个很好的起点。

于 2017-03-15T21:33:22.170 回答